LINQ Select New

3

我有一个包含重复行的DataTable。 我需要去除这些行。 我的尝试方法:

 Dim dups1 = From row In objDataSet.Tables(0).AsEnumerable() _
                       Let UserId = row.Field(Of Integer)("UserId") _
                       Group row By UserId Into grp = Group _
                       Where (grp.Count() = 2) _
                       Select grp

但我该如何选择“New”? 我需要...
Select New UserName = row("UserName"), UserId = row("UserId")

如何在第一次查询中完成此操作?
1个回答

3
您可以选择匿名类型。
Select New With { .UserName = row.Field(Of String)("Username"), .UserId = row.Field(Of Integer)("UserId") }

假设UserIdUserName的组合是唯一的,那么可以将其集成到查询中:

Dim dups1 = From row In objDataSet.Tables(0).AsEnumerable()
            Group row By UserCols = New With {
                Key .UserId = row.Field(Of Integer)("UserId"),
                Key .UserName = row.Field(Of String)("Username")
            } Into Group
            Where Group.Count() > 1
            Select UserCols

我该如何在第一个查询中实现这个? - undef.ms
如果使用此版本,我会遇到一个错误:“Count'不是'<anonymous type>'的成员;它在当前上下文中不存在。”针对UserCols.Count()。 - undef.ms
@undef.ms:抱歉,已修复。 - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接