如何从出现一次的数据表中选择值
本文关键字:一次 数据表 选择 | 更新日期: 2023-09-27 17:50:23
myDataTable有一个名为ORDER_NO
的列。我想从这个表中选择出现一次的行。如果一个值出现两次,则不应选择它。ORDER_NO
contains Values
1000A
1001A
1001B
1002A
1002B
1002C
1000A
1001A
1001B
我想只选择上面的值:
1002A
1002B
1002C
在列中出现一次。有人能帮忙吗?
所以你想要唯一的行根据ORDER_NO
列?
假设它是一个字符串列,你可以使用LINQ的Enumerable.GroupBy
:
var uniqueRows = table.AsEnumerable()
.GroupBy(row => row.Field<string>("ORDER_NO"))
.Where(group => group.Count() == 1)
.Select(group => group.First());
如果你想从唯一的行中得到一个新的DataTable
,你可以使用:
table = uniqueRows.CopyToDataTable();
如果你只想要这个列的值:
IEnumerable<string> unqiueOrderNumbers = uniqueRows.Select(row => row.Field<string>("ORDER_NO"));
除了@Tim的答案,你还可以使用DataView来简化这个东西
DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "ORDER_NO");
我认为这是从任何表中获得不同值的最简单方法。您甚至可以在ToTable方法中提到多个列。只需传递列名作为参数,就像上面示例代码中发送的ORDER_NO一样。