背景:我有两个具有不同名称属性(两个字符串)的不同类型对象的集合。 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();

10-04 19:44