如何使用linq合并两个子列表

时间:2016-05-16 22:41:05

标签: c# linq

我有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}

1 个答案:

答案 0 :(得分:3)

问题很混乱,你想要达到的目标是什么,颜色和大小之间的关系是什么,在列表1中他们没有一对一的映射数据,但是以下是我的建议获得解决方案:

var result = list1.Concat(list2).GroupBy(x => x.Color,x => x.Size);

这里我们连接两个列表,这仍然会导致重复的数据,然后您可以如上所示分组,这将在这种情况下基于颜色聚合大小。此处的大小仍然是结果中的集合,可以对其进行处理以提供相关结果。

其他选项,我可以想到的是Full Outer Join,你需要定义哪些列表数据优先级和默认值是什么