【问题标题】:Linq GroupBy is producing duplicate keysLinq GroupBy 正在生成重复的密钥
【发布时间】:2016-03-11 10:40:21
【问题描述】:

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

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,并且键是重复的。

Group By 中的键的全部要点不是每个键与所有匹配项仅返回一次吗?

【问题讨论】:

  • 该字段的类型:kk.enquiry_id, kk.name?

标签: vb.net linq


【解决方案1】:

在 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# 中,匿名类型的所有属性都自动成为键,您无法更改。

【讨论】:

  • 太棒了!感谢那。在任何文档中都没有发现这一点。
猜你喜欢
  • 2011-05-08
  • 2012-12-16
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2010-11-18
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多