我有一个对象列表。这些对象由一个自定义类组成,该类基本上包含两个字符串字段
我需要知道的是,这些字符串中是否有任何重复项。因此,我想知道
此外,我想将包含重复字符串的每个对象标记为具有重复字符串(在对象上使用bool
因此,当检测到重复项时,我只需对列表进行foreach操作,如下所示:
String1
和String2
。我需要知道的是,这些字符串中是否有任何重复项。因此,我想知道
objectA.String1 == objectB.String1
,或ObjectA.String2 == ObjectB.String2
,或ObjectA.String1 == ObjectB.String
,或ObjectA.String2 == ObjectB.String1
。此外,我想将包含重复字符串的每个对象标记为具有重复字符串(在对象上使用bool
HasDuplicate
)。因此,当检测到重复项时,我只需对列表进行foreach操作,如下所示:
foreach (var item in duplicationList)
if (item.HasDuplicate)
Console.WriteLine("Duplicate detected!");
这似乎是一个可以用LINQ解决的好问题,但是我无论如何都想不出一个好的查询。所以我使用了“老派”的foreach解决了它,但我仍然对LINQ版本感兴趣。
list.Where( a =>
list .Any(a != x && (x => x.Foo == a.Foo || x.Bar == a.Bar || x.Foo == a.Bar || x.Bar == a.Foo))
).ToList(); - Mike Goatly