代码之家  ›  专栏  ›  技术社区  ›  Gage

Linq比较两个列表-添加新列表、删除旧列表、保留相同列表

  •  11
  • Gage  · 技术社区  · 16 年前

    我有两个对象A的列表(l1,l2),l1用于在更改对象之前存储对象列表(多对多关系)。l2是更改后的关系。我需要保留公共元素,但添加新元素并删除不在L2中的元素。我想知道是否有一个单一的班轮,我可以使用与林肯完成这一点。如果你需要更多信息,请告诉我。

    提前谢谢

    3 回复  |  直到 16 年前
        1
  •  17
  •   Thomas Levesque    16 年前

    如果我正确理解了你的要求,这应该是有效的:

    L1.AddRange(L2.Except(L1));
    L1.RemoveAll(item => !L2.Contains(item));
    

    不是一条线,但足够近…

        2
  •  1
  •   Vinay B R    16 年前

    试试这个

    var a = from ele in list1
            let alleles = list1.Union(list2)
            let deleles = alleles.Except(list1)
            let neweles = alleles.Except(list2)
            select new { DeletedEles = deleles, NewEles = neweles };
    
        3
  •  1
  •   Pompair    16 年前

    也许Linq的intersect()之类的布尔运算符对您有帮助?

    推荐文章