【问题标题】:How to Merge two sub list with linq如何用 linq 合并两个子列表
【发布时间】:2016-09-12 20:39:36
【问题描述】:

我有 2 个嵌套列表需要合并在一起我尝试使用 linq 查询我尝试加入和联合我没有完成查询..有没有办法按照我需要的方式合并这些?

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 与一个没有重复记录的合并

喜欢: 列表 1:

Clour :                      
     Red                           
     Blue
Size:                      
      XL                           
      M
      S
      L

编辑以更好地理解问题

我的假设是,您的表结构类似于(以下两列):

Details            DetailsValue

Size                 {S,M,L}
Colour             {Green,blue}
PerfumeSize     {50ml,100ml}
Type                {EDP,EDT}

还有一个类似的表,现在你想合并它们,没有任何值重复,对吗?

另一个列表 详情详情价值

Size                 {S}
Colour             {Red}
PerfumeSize     {50ml,150ml}
Type                {EDP}

预期结果:

详细信息详细值

Size                 {S,M,L}
Colour             {Green,blue,red}
PerfumeSize     {50ml,100ml,150ml}
Type                {EDP,EDT}

【问题讨论】:

标签: c# linq


【解决方案1】:

问题很混乱,不清楚您想要实现什么,颜色和大小之间的关系是什么,在列表 1 中它们没有一对一的映射数据,但以下是我获得解决方案的建议:

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

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

其他选项,我能想到的是Full Outer Join,您需要在其中定义,哪些列表数据优先,哪些是默认值,对于不可用的数据

【讨论】:

  • 抱歉问题的清晰度。我需要解释。此列表包含详细信息和详细信息值一堆产品。例如我有衣服和香水清单我把这个项目的细节和细节值放在一起,比如:{Size{S,M,L},Clour{Green,blue},PerfumeSize{50ml,100ml},Type{EDP,EDT} } 这样的列表我有另一个这样的列表我需要合并在一起
  • @legend_blue 不要在对答案的评论中解释问题。使用此信息编辑您的问题。另外,不要只是解释,要展示。
  • @legend_blue 是的,这很重要,请编辑输入和输出要求,以便设计出正确的 linq,稍微详细一点
  • @legend_blue,查看我对您问题的编辑并回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多