使用LINQ在List 中搜索重复条目

我有一个包含TextBox控件的列表。 基本上所有这些都分组在一个组框控件中。

List listTextBox; 

每当调用groupboxvalidation事件时,我都需要检查这些TextBox中的任何重复条目。

我只能想到无聊的方法是按顺序遍历列表并每次解析文本框值,并查找是否有多个具有相同值的条目。

任何人都可以通过使用谓词来更有效地执行相同的操作来帮助我。

例如:

 list.Count(//predicate that gets the value for all textbox); 

如果计数超过1,那么我确定文本框中有重复的条目。

还有其他更好的方法吗?

干杯VATSAG

您可以使用GroupBy ,然后使用Count > 1过滤组,并为所有此类文本选择Key 。 我没有遵守代码,但这应该足够接近。

 var duplicateTexts= listTextBox.GroupBy(tb => tb.Text) .Where(group => group.Count() > 1) .Select(group => group.Key); 

大概这样的事情可能有用。

 var duplicates = listTextBox .GroupBy(i => i.Text) .Where(g => g.Count() > 1) .Select(g => new {Count = g.Count(), Name = g.Key}); foreach (var d in duplicates) { var keyName = d.Key; var count = d.Count; }