Select distinct仅选择单列

Far*_*hid 2 c# linq distinct-values

基于这个问题:

[如何使用LINQ进行SELECT UNIQUE?

我编写了下面的表达式来OrganizationIDdt包含多列的数据表中选择具有唯一列的行.

var distinctRows = (from DataRow dRow in dt.Rows
                    select new { col1 = dRow["OrganizationID_int"] }).Distinct();
Run Code Online (Sandbox Code Playgroud)

但是当我distinctRows在执行表达式后检查时,它只有1列(col1)的记录而不是整个列.我担心添加类似于col2=...等的表达式可能会被解释为我希望在所有这些列上选择distinct.

那么如何在仅在1列而不是整列上应用唯一过滤器时获得整行?

Tim*_*ter 5

我想要所有列满足唯一条件的整行.我想在下一步中进行迭代.

因此,您不希望按该字段分组并返回多行中的一行.您只需要唯一的行.

一种方法是使用Enumerable.GroupBy和计算每组中的行:

var uniqueRows = dt.AsEnumerable()
                   .GroupBy(r => r.Field<int>("OrganizationID_int"))
                   .Where(g => g.Count() == 1)
                   .Select(g => g.First());
Run Code Online (Sandbox Code Playgroud)