Vb.net LINQ过滤重复列值并替换重复列值

Vb.net LINQ过滤重复列值并替换重复列值,vb.net,Vb.net,我有这张桌子: Code ------ Version AAA ------ 0.0.0.0 AAA ------ 0.0.0.1 AAA ------ 0.0.0.1 AAA ------ 0.0.0.1 AAA ------ 0.0.0.1 BBB ------ 0.0.0.0 CCC ------ 0.0.0.0

我有这张桌子:

Code   ------     Version   
AAA    ------      0.0.0.0    
AAA     ------     0.0.0.1    
AAA     ------     0.0.0.1   
AAA     ------     0.0.0.1   
AAA     ------     0.0.0.1   
BBB    ------      0.0.0.0    
CCC     ------     0.0.0.0    
CCC     ------     0.0.0.0    
这是我在表中的数据,我想将其转换为:

Code    ------     Version   
AAA    ------      0.0.0.0    
AAA    ------      0.0.0.1    
AAA    ------      0.0.0.2   
AAA    ------      0.0.0.3   
AAA    ------      0.0.0.4  
BBB    ------      0.0.0.0    
CCC   ------       0.0.0.0    
CCC   ------       0.0.0.1    
现在,我试着用外观来做一些测试,但是我认为它可以用LINQ来改进。这是我当前的代码:

For Each row As DataRow In duplicateEntityRecords.Rows
    Dim strkey = row(0).ToString
    foundrows = dataObject.Tables("tables").Select("version= '" & strkey & "'")
    If foundrows.Length > 1 AndAlso Not strkey.Equals(String.Empty) Then 
        Dim increment As String = "1"
        For i As Integer = 1 To
            foundrows.GetUpperBound(0)
            foundrows(i)("friendlyname") = foundrows(i)("friendlyname") + increment increment = increment + 1
        Next
    End If
Next

这是否可以使用LINQ执行相同的任务?

您可以按匿名类型分组,然后使用
首先
仅为每个组获取一个:

Dim query = From row In table
            Group row By row.Code, row.Version Into codeVersionGroup = Group
            Select codeVersionGroup.First()

For Each x In query
    Console.WriteLine("{0}---{1}",x.Code, x.Version)
Next

您能告诉我们您做了什么吗?对于重复EntityRecords.Rows Dim strkey=row(0)。ToString foundrows=dataObject.Tables(“表格”)。如果foundrows.Length>1且也不是strkey.Equals(String.Empty),请选择(“版本=”&strkey&“”),然后Dim increment As String=“1”对于foundrows.GetUpperBound(0)foundrows(i)(“friendlyname”)=foundrows(i)(“friendlyname”)+increment increment=increment+1 Next End If nextb但我对LINQ不太熟悉,所以我在循环,这是性能问题。因此需要使用LINQ@FedericoNavarreteThank获得答案,但我需要该表中的所有字段。我不想去first@Nani:它接受所有字段,每个组只返回一条记录,因此删除duplicates@TimSchmelter我认为OP不希望删除重复项,但希望用每个代码的唯一版本替换非唯一版本。@DavidWilson,但这是通过此查询完成的。每一组只能存活一行