背景:我有两个具有不同名称属性(两个字符串)的不同类型对象的集合。 Collection1
中的对象具有一个名为Name
的字段,Collection2
中的对象具有一个名为Field
的字段。
我需要比较这两个属性,并根据该字符串属性从Collection1
中没有匹配项的Collection2
中获取项目(Collection1
总是有更多或相等数量的项目。所有项目都应有一个完成后,按Collection2
中的名称/字段匹配项)。
问题:我使用列表找到了答案,它们对我有所帮助(就其价值而言,我使用的是收藏集)。我确实发现了this answer似乎对我有用,但是我想将查询语法(如果是这样的话)转换为LINQ查询。见下文:
//Query for results. This code is what I'm specifically trying to convert.
var result = (from item in Collection1
where !Collection2.Any(x => x.ColumnName == item.FieldName)
select item).ToList();
//** Remove items in result from Collection1**
//...
我真的对这两种语法都不熟悉(正在使用它),但是我想我通常都知道这是做什么的。我正在努力将其转换为LINQ语法,我想学习这两个选项,而不是某种嵌套循环。
我从
Collection1
中删除查询结果后的最终目标:Collection1.Count == Collection2
,并且集合中的每个项目都满足以下条件:ItemFromCollection1.Name == SomeItemFromCollection2.Field
(如果这样的话……) 最佳答案
您可以将其转换为LINQ方法,如下所示:
var result = Collection1.Where(item => !Collection2.Any(x => x.ColumnName == item.FieldName))
.ToList();