繁体   English   中英

vb.net-使用LINQ从数据表中获取唯一条目并将结果复制到另一个数据表中

[英]vb.net - get unique entries from datatable using LINQ and copy result into another datatable

对不起,我知道已经被问了一千遍了,但是我不知道该怎么做,因此我非常感谢任何提示。

我有一个巨大的数据表,其中包含相当多的列并超过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))'的成员

您只能将CopyToDataTableDataRows一起使用, DataRows不能与字符串一起使用。

您要如何处理那些不包含Key列值不合理的行? 您要忽略所有行还是仅重复项(保留第一行)?

您可以使用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM