我有一个List,其中MyClass有一个属性'Name'。我想知道列表中是否有重复的MyClass具有相同的名称。
此外,我有一个不同的列表,我想知道与列表A相比是否有任何重复。
答案 0 :(得分:6)
回答第一个问题
我想知道是否有重复 MyClass中的名称相同 列表。
你可以这样做:
bool hasDuplicates =
listA.Count != listA.Select(c => c.Name).Distinct().Count();
回答第二个问题
另外,我有一个不同的List和我 想知道是否有 与列表A相比重复。
你可以这样做:
bool hasDuplicates =
differentList.Select(c => c.Name).Intersect(listA.Select(c => c.Name)).Any();
答案 1 :(得分:2)
要检查一个List<MyClass>
list
中的重复名称:
var names = new HashSet<String>();
foreach (MyClass t in list)
if(!names.Add(t.Name))
return "Duplicate name!"
return "No duplicates!"
或变体取决于有/不重复时您想要做什么。对于两个单独列表的情况,只需从一个列表中构建names
集合,然后在另一个列表上进行此类检查循环(详细信息取决于仅在第一个列表中的重复名称应该发生的情况,在第二个列表,或者只在一个列表和另一个列表之间,当每个列表都是重复时 - 单独考虑 - 你的规格太不精确,不能让我猜测你想要或期望的多种可能的组合!