c# - 查找与分组

标签 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; }

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

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

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

这些语句之间有什么区别?

提前致谢。

马可 B.

最佳答案

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

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

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

关于c# - 查找与分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739462/

相关文章:

linq 像空字符串

c# - 使用 linq 和自定义排序规则对列表列表进行排序

c# - 在哪里找到 ViewID

c# - ASP.NET 缓存之间的区别

c# - 在 try block 中尝试 catch - 异常应该调用相同的函数

.net - 处理具有多个版本的软件的发布管理的最佳方法是什么?

C# 不能在 ushort 列表项中使用 Linq DefaultIfEmpty?

c# - 开发存储账户需要身份验证

c# - 如何构建 Windows 窗体电子邮件感知文本框?

c# - Windows 7 中的断电事件...C# 问题