对不起,我知道这已经被问了一千次,但我无法弄明白该做什么,所以我真的很感激任何提示。
我有一个巨大的数据表,包含很多列和超过200000行,现在我想从这个数据表中获取一列中具有不同值的所有行,并继续将它们用作数据表。
首先,我希望使用LINQ获取所有唯一条目:
Dim query = From row In d1.AsEnumerable() Select row.Field(Of String)("Key") Distinct
然后我想将这些复制到另一个数据表中:
Dim dt As DataTable = query.CopyToDataTable
然而query.CopyToDataTable
不起作用
'CopyToDataTable'不是'EnumerableRowCollection的成员' IEnumerable(Of Char))'
答案 0 :(得分:2)
您只能CopyToDataTable
使用DataRows
而不能使用字符串。
对于那些不包含Key
的行,您想要做什么 - 列值是unqiue?您想省略所有行还是仅删除重复项(保留第一行)?
您可以使用EmumerableGroupBy
。如果你想保留第一个:
Dim keyGroups = d1.AsEnumerable().GroupBy(Function(row) row.Field(Of String)("Key"))
Dim dt As DataTable = keyGroups.Select(Function(g) g.First()).CopyToDataTable()
如果您只想要那些独特的:
Dim dt = keyGroups.Where(Function(g) g.Count() = 1).Select(Function(g) g.First()).CopyToDataTable()