从 C# 中的 DataTable 中获取 Distinct Column 以及其他列值

Posted

技术标签:

【中文标题】从 C# 中的 DataTable 中获取 Distinct Column 以及其他列值【英文标题】:Taking Distinct Column along with other column values also from DataTable in C# 【发布时间】:2013-12-16 10:43:28 【问题描述】:

我有一个数据表,其中有 4 个列。 Col1、Col2、Col3、Col4。 我想过滤 DataTable 以仅采用不同的 Col1 值。

DataView dv = MyDataSet.Tables[0].DefaultView;
listview.ItemsSource = dv.ToTable(true, new string[]  "Col1" ).DefaultView;

当我这样做时,listview 只显示 Col1 值,但其他列不显示。

但我不能这样做,

dv.ToTable(true, new string[]  "Col1", "Col2", "Col3", "Col4" ).DefaultView;

因为我不希望其他列有不同的值。更多的 Col1 数据是重复的。

有什么办法吗?我只想在 MyDataSet.Tables[0] 中进行过滤。不想创建另一个表来存储过滤器数据,因为我将它绑定到 WPF 列表视图。

【问题讨论】:

【参考方案1】:

您需要按Col1 分组,然后取每个组的第一行。最简单的方法是使用 Linq to DataSets:

var query =
    from row in MyDataSet.Tables[0].AsEnumerable()
    group row by row.Field<int>("Col1") into g
    select g.First();

listview.ItemsSource = query.AsDataView();

(将int替换为Col1的实际数据类型)

【讨论】:

@user2017793,是的,有:msdn.microsoft.com/EN-US/library/bb908061.aspx

以上是关于从 C# 中的 DataTable 中获取 Distinct Column 以及其他列值的主要内容,如果未能解决你的问题,请参考以下文章

C#如何将datatable中的数据批量更新到MYSQL数据库

从 C# .NET 中的 DataTable 到 JSON

Winforms C#:从远程计算机文件夹获取图像并加载到 DataTable 的列中

关于c#中的datatable,不知道如何清空里面的数据

C# 在一次事件中获取的DATATABLE怎么让全局共享?

C# sqlsever数据库 通过datatable更新数据问题