在DataTable中查找非重复行

时间:2015-03-23 20:44:03

标签: c# linq datatable

我目前正在通过DataTable扫描以查找“ColumnA”中的非重复值

请注意,我不是在寻找DISTINCT值,因为它会返回一行以上的结果。

目前,当我谷歌“c#查找非重复行”时,我只收到处理删除重复项的结果,这不是我想要做的。

例如:

如果'ColumnA'的每一行包含:

1

1

1

2

1

我希望能够将包含'2'的行作为其值。

我可以使用LINQ表达式来执行此操作吗?我发现了其他一些SO问题并找到了接近的答案(除此之外,他们还返回了DISTINCT行)。

我知道使用SQL我可以使用Count()表达式来计算行的实例,但我是从C#类中执行此操作。

提前致谢。

1 个答案:

答案 0 :(得分:5)

在LINQ和SQL中,您将为此使用group by group,然后按count限制结果。区别在于,在SQL中,您将使用HAVING,而在LINQ中,您将继续使用Where

以下是LINQ中的外观:

var res = source
    .GroupBy(item => item.ColumnA)
    .Where(g => g.Count() == 1)
    .Select(g => g.Single());