我有一个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列表视图。
答案 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
)