如何从Datatable中选择出现一次的值

时间:2015-05-21 08:55:06

标签: c# asp.net

myDataTable有一个名为ORDER_NO的列。我想从这个表中选择出现一次的行。如果值出现两次而不应该选择。 ORDER_NO包含值

1000A
1001A
1001B
1002A
1002B
1002C
1000A
1001A
1001B

我想只选择表格上面的值是:

1002A
1002B
1002C

因为它们在列中出现一次。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

因此,根据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"));

答案 1 :(得分:0)

除了@Tim的回答,您还可以使用DataView来简化此事

DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "ORDER_NO");

我认为这是从任何表中获取不同值的最简单方法。您甚至可以在ToTable方法中提到多个列。只需将列名称作为参数传递,就像在上面的示例代码中发送ORDER_NO一样。