Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找与groupby_C#_.net_Linq - Fatal编程技术网

C# 查找与groupby

C# 查找与groupby,c#,.net,linq,C#,.net,Linq,我想知道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; } 这些说法有什么区别 提前谢谢 Marco B.ToLo

我想知道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; }
这些说法有什么区别

提前谢谢


Marco B.

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

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

基本上,您应该使用哪一个取决于您将如何处理结果。如果您只想对它们进行一次迭代(例如,为了进一步转换),
GroupBy
通常可以。如果您想将它们作为多个操作的集合,那么
ToLookup
的即时特性非常有用

  • ToLookup是缓冲的。groupBy迭代组
  • groupBy使用差异执行,而ToLookup使用即时执行

  • 定义“差异”。。。一个区别可能是“返回值”,另一个区别是具体的实现。。。精心设计!!谢谢你,先生:)
    var groupedPeople = People.GroupBy((x) => x.Id);
    
    var lookupPeople = People.ToLookup((x) => x.Id);