2012-09-14 35 views
0

如何将以下代码转换为单行代码?我知道这是可能的,但我似乎无法想到如何再次。可能使用selectmany?如何将此foreach循环合并为一行lambda/linq

Dim claimIds = allClaimLineItems.Select(Function(i) i.ClaimLineItemId).Distinct() 

    For Each id As Guid In claimIds 
     Result.ClaimDuplicateItemRuleDataList.Add(GetClaimDuplicateItemRuleDataWithHighestDuplicateFlags(allClaimLineItems.Where(Function(i) i.ClaimLineItemId = id))) 
    Next 

谢谢!

回答

1
var result = allClaimLineItems 
    .Select(i => i.ClaimLineItemId) 
    .Distinct() 
    .GroupJoin(allClaimLineItems, g => g, i => i.ClaimLineId, (g, matches) => matches) 
    .Select(GetClaimDuplicateItemRuleDataWithHighestDuplicateFlags) 
    .ToList();