myDataTable有一个名为ORDER_NO
的列。我想从这个表中选择出现一次的行。如果值出现两次而不应该选择。
ORDER_NO
包含值
1000A
1001A
1001B
1002A
1002B
1002C
1000A
1001A
1001B
我想只选择表格上面的值是:
1002A
1002B
1002C
因为它们在列中出现一次。有人可以帮忙吗?
答案 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一样。