【问题标题】:Orderby statement uses First() method call, why is it needed?Orderby 语句使用 First() 方法调用,为什么需要它?
【发布时间】:2011-02-05 05:27:34
【问题描述】:

我是 Linq 的新手,我想知道为什么在以下查询中按县订购时需要调用 First() 方法。另外,在知道为什么需要它之后,使用Last()方法可以达到同样的效果吗?

var hsQ = from hspt in hospitals
          orderby hspt.City
          group hspt by hspt.County into hsptGroup
          orderby hsptGroup.First().County
          select hsptGroup;

注意:以上示例是我正在阅读的一本书的问题/答案的一部分,hospitals 类型没有明确定义供我查看。

【问题讨论】:

  • 如果他们使用orderby 中组的.Key 会更清楚,因为在这种情况下Key 是县。

标签: c# linq c#-4.0 linq-to-objects


【解决方案1】:

那是因为hsptGroup 拥有一组医院,而不是一个医院。

即使该组中的所有医院都属于同一个县,您仍然需要指定.First(),以便引用单个医院的县。

【讨论】:

  • 请注意,该组中的所有医院都具有相同的 Country 值,因为它们都按该属性分组。因此,这些医院中的任何一家通过Country 订购,无论是First() 还是Last(),都会产生相同的结果。正如 Hightechrider 在他的评论中提到的那样,如果 hsptGroup 是由 Key 订购的,那将是最清楚的。
  • 那么 First() 方法的重点是获取单个值来排序?这是否取决于 First().Count 收到的县是什么? IE。如果县以 A 或 Z 开头,是否相关?
  • @contactmatt .First() 返回每​​个组的第一个医院记录。你为什么要打电话给.First().Count
  • 啊,“County”,我也上当了。我将此归咎于 Scrum。 :)
  • 谢谢 Gabe,我猜熬夜会有一些副作用 :-)
【解决方案2】:

实际上,First 用于访问 Grouped 项目集合中的第一个元素。因此,随后根据第一项的县进行排序。是的,您可以选择 Last,这样将根据 Grouped Collection 中的最后一项进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2015-08-09
    相关资源
    最近更新 更多