C# DataTable Linq select distinct values where column equals
本文关键字:where column equals values distinct DataTable Linq select | 更新日期: 2023-09-27 18:16:31
我有一个像这样设计的Datatable (Groups)
我想要从X所在的列中选择并获取与ColumnB
不同的值这是我的
var names = (from DataRow dr in Groups.Rows
orderby (string)dr["ColumnB"]
select (string)dr["ColumnB"]).Distinct();
这个会显示不同的颜色,但是它显示的是紫色,我不想要紫色
谢谢!
var names = (from DataRow dr in Groups.Rows
where dr["ColumnA"] == "X"
orderby (string)dr["ColumnB"]
select (string)dr["ColumnB"]).Distinct();
DataTable dt2 = dt1.Select("ColumnA = 'X'").CopyToDataTable().DefaultView.ToTable(true, "ColumnB");
所以这里我们只选择你想要的数据行,只有列na是x的行,然后我们选择只看列b,但只有唯一的值。按照这个顺序执行,您将获得另一个数据表。它将只包含1列,columnB,并且它将只包含唯一/不同的值。
。
如果你的返回值不止一个,而你只想用其中一个值来区分整个集合,你应该使用自定义的IEqualityComparer。
var names = (from DataRow dr in Groups.Rows
where (string)dr["ColumnA"] == "X"
orderby (string)dr["ColumnB"]
select new {
ColumnA = (string)dr["ColumnA"],
ColumnB = (string)dr["ColumnB"]
}).Distinct(new MyCustomEqualityComparer());
edit: to include where子句
edit2:更改为custom IEqualityComparer