背景:我有两个具有不同名称属性(均为字符串)的不同类型对象的集合。 Collection1 中的对象有一个名为Name 的字段,Collection2 中的对象有一个名为Field 的字段。
我需要比较这两个属性,并根据该字符串属性从 Collection1 中获取项目,其中 Collection2 中没有匹配项(Collection1 将总是有更多或相等数量的项目。完成后,所有项目都应在 Collection2 中具有按名称/字段匹配的项目)。
问题:我使用 Lists 找到了答案,它们对我有一点帮助(不管它的值(value),我正在使用 Collections)。我确实找到了 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();
