C# 从C中的DataTable中获取Distinct列和其他列值#

C# 从C中的DataTable中获取Distinct列和其他列值#,c#,wpf,datatable,C#,Wpf,Datatable,我有一个数据表,其中有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

我有一个数据表,其中有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 listview。

您需要按
Col1
分组,然后取每组的第一行。最简单的方法是使用Linq访问数据集:

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();
var查询=
来自MyDataSet.Tables[0]中的行。AsEnumerable()
按行将字段(“Col1”)分组为g
选择g.First();
listview.ItemsSource=query.AsDataView();
(将
int
替换为
Col1
的实际数据类型)

@user2017793,有: