我有2个通用列表,不包含相同类型的所有字段
IList<Category> and List<CategoriesRow>Categories
categoryList = IList<Category>
但两者都有公共字段名称和ID。
我想比较列表类别和categoryList,并找到categoryList中的那些类别,其中categoryList [index] .ID不存在于所有ID类别的列表中。对于类别中不存在的所有内容,我将不得不从CatgoryList中删除它们。
我之前有一篇文章,其中给出了LINQ的示例,但问题是我必须使用Dynamic,这意味着我将categoryList和Categories作为Dynamic传递。
任何人都可以举例说明如何进行上述操作,因为我不知道该怎么做。
答案 0 :(得分:4)
使用.Except
LINQ运算符。
像这样:
var uniqueList = list1.Except(list2);
不确定“我必须使用动态”是什么意思。
这是一个标准的LINQ操作,可用于实现IEnumerable
的所有类型。
Here's关于这样做的好文章。
答案 1 :(得分:1)
假设你有list1
和list2
这样:
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();
希望能回答你的问题