在 DataTable 中查找非重复行
Find a Non-Duplicate Row in DataTable
我目前正在扫描 DataTable 以在 "ColumnA"
中查找非重复值
请注意,我不是在寻找 DISTINCT 值,因为那样会 return 比结果行多一个。
目前,当我 google "c# Find non-duplicate row" 时,我只收到处理删除重复项的结果,这不是我想要做的。
例如:
如果 'ColumnA' 的每一行包含:
1
1
1
2
1
我希望能够提取包含“2”作为其值的行。
是否有我可以用来执行此操作的 LINQ 表达式?我发现了其他一些 SO 问题并找到了接近的答案(除了它们再次 returned DISTINCT 行)。
我知道 SQL 我可以使用 Count() 表达式来计算一行的实例,但我是从 C# class.
提前致谢。
在 LINQ 和 SQL 中,您将为此使用分组依据构造,然后按计数限制结果。不同之处在于,在 SQL 中您将使用 HAVING
,而在 LINQ 中您将继续使用 Where
.
这是它在 LINQ 中的样子:
var res = source
.GroupBy(item => item.ColumnA)
.Where(g => g.Count() == 1)
.Select(g => g.Single());
我目前正在扫描 DataTable 以在 "ColumnA"
中查找非重复值请注意,我不是在寻找 DISTINCT 值,因为那样会 return 比结果行多一个。
目前,当我 google "c# Find non-duplicate row" 时,我只收到处理删除重复项的结果,这不是我想要做的。
例如:
如果 'ColumnA' 的每一行包含:
1
1
1
2
1
我希望能够提取包含“2”作为其值的行。
是否有我可以用来执行此操作的 LINQ 表达式?我发现了其他一些 SO 问题并找到了接近的答案(除了它们再次 returned DISTINCT 行)。
我知道 SQL 我可以使用 Count() 表达式来计算一行的实例,但我是从 C# class.
提前致谢。
在 LINQ 和 SQL 中,您将为此使用分组依据构造,然后按计数限制结果。不同之处在于,在 SQL 中您将使用 HAVING
,而在 LINQ 中您将继续使用 Where
.
这是它在 LINQ 中的样子:
var res = source
.GroupBy(item => item.ColumnA)
.Where(g => g.Count() == 1)
.Select(g => g.Single());