我有一个包含100多个列和280多行的DataTable,需要根据不同的UserID对它们进行分组,然后单独处理每一行。用户it是唯一的,但是,每个UserID可以有多个行(每个UserID可以有1到20行与它相关联)。所有列,包括UserID,都是字符串值。
我使用过这样的代码:
Dim src = From row In sampleTable.AsEnumerable()若要返回EnumerableRowCollection(Of DataRow),但当我尝试按DataTable的UserID列分组时,则会得到一个错误。
我需要将DataTable中的行按不明确的UserID分组,并处理每一行。为了完成子处理需求,我还需要跟踪每10个不同的用户in。
我如何根据不同的DataTable对UserID进行分组,并访问具有重复用户I的所有行?
在收到迄今收到的答复后,我尝试了如下:
Dim src = loanTable.AsEnumerable().ToLookup(x >= x.bSSN, x >= x)并在ToLookup()上得到了一个错误。“重载解析失败,因为不能用这些参数调用可访问的'ToLookup‘(无法推断类型参数'TKey’)。此外,ToLookup(x => x.UserID,x => x)中的'x‘返回'x’未声明的错误。
发布于 2017-09-06 12:02:41
我不知道你在GroupBy上有什么问题,但这是可行的:
Dim userIdGroups = sampleTable.AsEnumerable().GroupBy(Function(row) row.Field(Of Int32)("UserId"))现在,每个组都包含带有该UserId的所有行。
另一种选择是使用查找(类似于字典,但您可以访问不可用的键,并得到一个空的行序列返回,而不是异常):
Dim userIdLookup = sampleTable.AsEnumerable().ToLookup(Function(row) row.Field(Of Int32)("UserId"))
Dim userid1Rows As IEnumerable(Of DataRow) = userIdLookup(1)还可以使用For each枚举GroupBy或Lookup的所有组。
For Each rg In userIdLookup
Dim userid = rg.Key
Dim count = rg.Count()
' if you want to enumerate the rows:
For Each row In rg
' process
Next
Nexthttps://stackoverflow.com/questions/46074397
复制相似问题