如何比较2个对象列表并删除不常见的项目?

时间:2010-07-14 05:41:03

标签: c#

我有2个通用列表,不包含相同类型的所有字段

IList<Category> and List<CategoriesRow>Categories

categoryList = IList<Category>

但两者都有公共字段名称和ID。

我想比较列表类别和categoryList,并找到categoryList中的那些类别,其中categoryList [index] .ID不存在于所有ID类别的列表中。对于类别中不存在的所有内容,我将不得不从CatgoryList中删除它们。

我之前有一篇文章,其中给出了LINQ的示例,但问题是我必须使用Dynamic,这意味着我将categoryList和Categories作为Dynamic传递。

任何人都可以举例说明如何进行上述操作,因为我不知道该怎么做。

2 个答案:

答案 0 :(得分:4)

使用.Except LINQ运算符。

像这样:

var uniqueList = list1.Except(list2);

不确定“我必须使用动态”是什么意思。

这是一个标准的LINQ操作,可用于实现IEnumerable的所有类型。

Here's关于这样做的好文章。

答案 1 :(得分:1)

假设你有list1list2这样:

IList<Category> list1 = new List<Category>();
IList<CategoryRow> list2 = new List<CategoryRow>();
//populate lists here....

现在仅从list1中选择Id中匹配list2的项目,您可以

list1 = list1.Where(c => list2.Exists(cr => cr.Id == c.Id)).ToList();

希望能回答你的问题