使用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; }