使用LINQ </textbox>在List <textbox>中搜索重复条目

时间:2015-04-06 06:25:16

标签: c# linq list

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

List<TextBox> listTextBox;

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

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

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

例如:

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

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

还有其他更好的方法吗?

干杯 VATSAG

2 个答案:

答案 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;
    }