我想知道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; }
Run Code Online (Sandbox Code Playgroud)
现在我可以使用上面的扩展方法:
var groupedPeople = People.GroupBy((x) => x.Id);
var lookupPeople = People.ToLookup((x) => x.Id);
Run Code Online (Sandbox Code Playgroud)
这些陈述之间有什么区别?
提前致谢.
马可B.
Jon*_*eet 68
ToLookup使用立即执行,并返回一个ILookup允许您按键查找组.
GroupBy使用延迟执行,只是按照第一次遇到每个组的顺序返回组(例如,第一组将包含源数据的第一个元素),不知道以后能够查看组按键.每次迭代结果时,都必须再次进行分组.
基本上,你应该使用哪个取决于你将如何处理结果.如果你只是一次迭代它们(例如进一步转换),GroupBy通常很好.如果您希望将它们保留为多个操作的集合,则直接性质ToLookup很有用.
| 归档时间: |
|
| 查看次数: |
8532 次 |
| 最近记录: |