我想知道 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);
这些说法有什么区别?
提前致谢。
Marco B.
ToLookup
uses 即时执行,并返回一个ILookup
它允许您通过按键查找组。
GroupBy
uses deferred执行,并且只是按照第一次遇到每个组的顺序返回组(例如,第一个组将包含源数据的第一个元素),不知道以后能够通过键查找组。每次迭代结果时,都必须重新分组。
基本上,您应该使用哪个取决于您将如何处理结果。如果您只想对它们进行一次迭代(例如为了进一步转换),GroupBy
通常都很好。如果您想将它们保留为多个操作的集合,则直接性质ToLookup
很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)