【问题标题】:lookup vs. groupby [duplicate]查找与 groupby [重复]
【发布时间】:2012-11-24 05:41:04
【问题描述】:

我想知道 groupBy 和 ToLookup 扩展方法有什么区别。

让我们有一个这样的对象列表:

public class Person
{
    public uint Id { get; set; }
    public string Name { get; set; }
    public DateTime Birthday { get; set; }
}


List<Person> People { get; set; }

现在我可以使用上面的扩展方法了:

var groupedPeople = People.GroupBy((x) => x.Id);

var lookupPeople = People.ToLookup((x) => x.Id);

这些语句有什么区别?

提前致谢。

马可·B.

【问题讨论】:

标签: c# .net linq


【解决方案1】:

ToLookup 使用立即 执行,并返回一个ILookup,它允许您按键查找组。

GroupBy 使用 deferred 执行,并且只是按照每个组第一次遇到的顺序返回组(例如,第一个组将包含源数据的第一个元素) ,不知道以后可以通过密钥查找组。每次迭代结果时,它都必须再次分组。

基本上,您应该使用哪个取决于您要对结果做什么。如果您只想对它们进行一次迭代(例如,为了进一步转换),GroupBy 通常就可以了。如果您想将它们作为多个操作的集合保存,ToLookup 的直接性质很有用。

【讨论】:

  • 谢谢先生 :)
【解决方案2】:
  1. ToLookup 被缓冲。 groupBy 迭代组。
  2. groupBy 使用延迟执行,而 ToLookup 使用立即执行。

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    相关资源
    最近更新 更多