我有2个嵌套列表需要合并在一起ı尝试使用linq查询eı尝试加入和联合ı没有完成查询..有没有方法合并这些我需要的方式?
public class BaseFilter
{
public string Name { get; set; }
public int ID { get; set; }
}
public class Filter
{
public string Name { get; set; }
public int DetailId { get; set; }
public List<BaseFilter> Values { get; set; }
}
我有2个过滤列表,如:
List 1: List2:
Clour : Colour:
Red Red
Blue
Size: Size:
XL L
M
S
我想将list2与没有重复记录的列表合并
喜欢: ist 1:
Clour :
Red
Blue
Size:
XL
M
S
L
编辑以更好地理解问题
我的假设是,你有表结构(如下两列):
Details DetailsValue
Size {S,M,L}
Colour {Green,blue}
PerfumeSize {50ml,100ml}
Type {EDP,EDT}
还有另一个类似的表,现在你想要合并它们,没有任何重复值,是否正确?
另一个清单 详情DetailsValue
Size {S}
Colour {Red}
PerfumeSize {50ml,150ml}
Type {EDP}
期待结果:
详情DetailsValue
Size {S,M,L}
Colour {Green,blue,red}
PerfumeSize {50ml,100ml,150ml}
Type {EDP,EDT}
答案 0 :(得分:3)
问题很混乱,你想要达到的目标是什么,颜色和大小之间的关系是什么,在列表1中他们没有一对一的映射数据,但是以下是我的建议获得解决方案:
var result = list1.Concat(list2).GroupBy(x => x.Color,x => x.Size);
这里我们连接两个列表,这仍然会导致重复的数据,然后您可以如上所示分组,这将在这种情况下基于颜色聚合大小。此处的大小仍然是结果中的集合,可以对其进行处理以提供相关结果。
其他选项,我可以想到的是Full Outer Join,你需要定义哪些列表数据优先级和默认值是什么