查找与groupby

我想知道groupBy和ToLookup扩展方法之间的区别是什么。

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

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

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

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

这些陈述之间有什么区别?

提前致谢。

马可B.

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

GroupBy使用延迟执行,只按照第一次遇到每个组的顺序返回组(例如,第一组将包含源数据的第一个元素),不知道是否能够查找组以后用钥匙。 每次迭代结果时,都必须再次进行分组。

基本上,你应该使用哪个取决于你将如何处理结果。 如果您只是一次迭代它们(例如进一步转换), GroupBy通常很好。 如果您想将它们保存为多个操作的集合, ToLookup的直接性质很有用。

  1. ToLookup是缓冲的。 groupBy迭代组。
  2. groupBy使用deffered执行,而ToLookup使用immediate。