根据对象中的属性查找重复项

时间:2014-05-31 18:11:58

标签: vb.net linq

我想根据对象中的字段检查重复项。

我有一个名为Item的对象,它有3个属性

ID
Rank
Name

我在一个名为

的容器中有一个Item类型列表
lstTheItems

我正在使用此代码检查重复项

'lstTheItems IS NOT CORRECT
 Dim duplicates = lstTheItems.GroupBy(Function(i) i) _
                                .Where(Function(g) g.Count() > 1) _
                                .[Select](Function(g) g.Key)

如何根据Name属性返回重复的项目?

3 个答案:

答案 0 :(得分:1)

Dim duplicates = svgGrpContainer.Select(Function(x) svgGrpContainer.Count(Function(y)) > 1));

这意味着我们将选择在svgGrpContainer中出现多次的所有元素。

Function(x) = svgGrpContainer的一个元素

svgGrpContainer.Count =遍历所有获得计数的元素..

Function(y) > 1 =表示我们将采用多次出现的所有元素

我希望这会有所帮助

答案 1 :(得分:0)

您需要按Name对其进行分组,而不是对象本身。此外,您可能希望将整个对象放回到重复列表中,而不仅仅是密钥(在本例中为名称)。

Dim duplicates = lstTheItems.GroupBy(Function(i) i.Name) _
                            .Where(Function(x) x.Count() > 1) _
                            .[Select](Function(x) x)

答案 2 :(得分:0)

Dim duplicates = svgGrpContainer.GroupBy(Function(x) x.Name).Where(Function(x) x.Count > 1).Select(Function(x) x)