我目前正在通过DataTable扫描以查找“ColumnA”中的非重复值
请注意,我不是在寻找DISTINCT值,因为它会返回一行以上的结果。
目前,当我谷歌“c#查找非重复行”时,我只收到处理删除重复项的结果,这不是我想要做的。
例如:
如果'ColumnA'的每一行包含:
1
1
1
2
1
我希望能够将包含'2'的行作为其值。
我可以使用LINQ表达式来执行此操作吗?我发现了其他一些SO问题并找到了接近的答案(除此之外,他们还返回了DISTINCT行)。
我知道使用SQL我可以使用Count()表达式来计算行的实例,但我是从C#类中执行此操作。
提前致谢。
答案 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());