如何从出现一次的数据表中选择值

本文关键字:一次 数据表 选择 | 更新日期: 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一样。