从DataTable的DataColumn中选择唯一值?

4
在SQL中,如果要获取列中的不同值,我会执行以下操作:

SELECT DISTINCT column_name FROM table_name;

SELECT DISTINCT ColumnName FROM TableName;

我希望能够像这样对 DataTable 的 DataColumn 进行操作。我知道可以使用类似于这种方式(请参考 链接),采用常规直观的方法,利用我们可以检查我们拥有的内容是否包含(whatWeWant)等事实,如果不是,我们可以将其添加到一些唯一项的容器中。我想知道是否有类似以下的东西存在:

var uniqueObjects = dataTable.Columns[0].Distinct().ToList();

我阅读了 Microsoft Docs,也知道 DataColumn 类没有名为 Distinct 的方法,但如果你们了解类似的内容,请告诉我。如果没有,我将使用 Contains 直观的方式创建一个 Distinct 扩展方法。

2个回答

6
如果您将System.Data.DataSetExtensions添加到项目的引用中:
using System.Data;

var uniqueObjects = dataTable
     .AsEnumerable()
     .Select(row => row[0])
     .Distinct()
     .ToList();

1
非常干净的答案,我喜欢它,我会尝试一下。 - G. LC
顺便说一句,我会将变量"row"更改为"column",因为它遍历列而不是行。 - G. LC
实际上,它将枚举 System.Data.EnumerableRowCollection<DataRow>。如果您事先知道列的类型,我还建议使用 @m-kudi 在下面使用的 Field 扩展。 - Kevin Bourassa-Houle

3
你可以这样做...
      var uniqueObjects =  dataTable.AsEnumerable().Select(x=>x.Field<ColumnType>("ColumnName")).Distinct().ToList();

让我试一下,看起来很有前途。 - G. LC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接