Linq GroupBy正在生成重复的密钥

时间:2016-03-11 10:40:21

标签: vb.net linq

我正在尝试将一个简单列表中的两个字段分组:

Dim pp = From kk In e1
    Group kk By key = New With {kk.enquiry_id, kk.name} Into grouping=Group
    Select key, grouping.tolist, grouping.count

然而,当我pp.dump()(我正在使用LinqPad)时,每个键值在grouping.tolist中只有一个项目,grouping.count始终为1并且键是重复的。

群组中的密钥的重点不是每个密钥只返回一次所有匹配的项目吗?

1 个答案:

答案 0 :(得分:0)

在VB.NET中,您必须指定匿名类型的键:

Dim pp = From kk In e1
    Group kk By key = New With {
        Key .enquiry_id = kk.enquiry_id, 
        Key .name = kk.name
    } Into grouping = Group
    Select New With {.key = key, .groupList = grouping.ToList(), .count = grouping.Count()}

更多信息:Anonymous Types (Visual Basic): Key Properties

  

关键属性与几个基本属性中的非关键属性不同   方式:

  • 仅比较键属性的值以确定两个实例是否相等。
  • 键属性的值是只读的,不能更改。
  • 对于匿名类型,编译器生成的哈希码算法中仅包含键属性值。

在C#中,匿名类型的所有属性都是自动键,您不能更改它。