从C#中的DataTable获取不同列以及其他列值

时间:2013-12-16 10:43:29

标签: c# wpf datatable

我有一个DataTable,其中有4个cols。 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 个答案:

答案 0 :(得分:1)

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

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