我有一个包含TextBox控件的列表。基本上所有这些都分组在一个组框控件中。
List<TextBox> listTextBox;
每当调用groupbox验证事件时,我都需要检查这些TextBox中的任何重复条目。
我只能想到无聊的方法是按顺序遍历列表并每次解析文本框值,并查找是否有多个具有相同值的条目。
任何人都可以通过使用谓词来更有效地执行相同的操作来帮助我。
例如:
list.Count(//predicate that gets the value for all textbox);
如果计数大于1,那么我确定文本框中有重复的条目。
还有其他更好的方法吗?
干杯 VATSAG
答案 0 :(得分:6)
您可以使用GroupBy
,然后使用Count
&gt;过滤群组1并为所有此类文本选择Key
。我没有遵守代码,但这应该足够接近。
var duplicateTexts=
listTextBox.GroupBy(tb => tb.Text)
.Where(group => group.Count() > 1)
.Select(group => group.Key);
答案 1 :(得分:1)
大概这样的事可能有用。
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;
}