查找与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
的直接性质很有用。
- ToLookup是缓冲的。 groupBy迭代组。
- groupBy使用deffered执行,而ToLookup使用immediate。