两个列表的差异

190

我有两个填充有CustomsObjects的通用列表。

我需要在第三个列表中检索这两个列表之间的差异(第一个列表中存在但第二个列表中不存在的项目)。

我正在考虑使用.Except()是一个好主意,但我不知道如何使用它。帮帮我!

14个回答

-1
var resultList = checklist.Where(p => myList.All(l => p.value != l.value)).ToList();

注意:结果列表是存在于检查清单中但不在我的列表中的项目。 - Teezy7

-2
List<ObjectC> _list_DF_BW_ANB = new List<ObjectC>();    
List<ObjectA> _listA = new List<ObjectA>();
List<ObjectB> _listB = new List<ObjectB>();

foreach (var itemB in _listB )
{     
    var flat = 0;
    foreach(var itemA in _listA )
    {
        if(itemA.ProductId==itemB.ProductId)
        {
            flat = 1;
            break;
        }
    }
    if (flat == 0)
    {
        _list_DF_BW_ANB.Add(itemB);
    }
}

6年过去了,接受的答案并没有增加任何新的价值。 - Mitch Wheat

-3
        List<int> list1 = new List<int>();
        List<int> list2 = new List<int>();
        List<int> listDifference = new List<int>();

        foreach (var item1 in list1)
        {
            foreach (var item2 in list2)
            {
                if (item1 != item2)
                    listDifference.Add(item1);
            }
        }

-3
如果你的两个列表都实现了IEnumerable接口,你可以使用LINQ来实现这一点。
list3 = list1.where(i => !list2.contains(i));

7
如果你的列表包含了一百万个项目,那么你将需要等待很长时间。可以使用 IEnumerable.Except 来替代。 - Jim Mischel
3
是的。我只有大约450个项目,而且我还在等待中。使用时要小心。 - Marnee KG7SIO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接