c# - 用于组织的 Linq 表达式(类似于 Group By 但不同)

标签 c# linq collections generic-programming

假设我有一个相当大的 IList<foo>在哪里 foo看起来像这样:

public class foo
{
    public string Region { get; set; }
    public string Territory { get; set; }
    public string Location { get; set; }
    public string Person { get; set; }
}

...有没有办法,使用一个相当快速/有效的表达,将这些 foo 项目“分组”Region ,所以我最终可能会得到 IDictionary<string, IList<foo>>并拥有 string关键是Region属性(property),每个下属 IList<foo>仅包含 foo与该地区匹配的记录? (它不一定是 IDictionary ,这只是为了说明我正在尝试做的事情的要点。)我想向我的 MVC View 呈现一个交互式列表,以这种方式组织,而不必写一些东西比较复杂还是使用第三方库。

最佳答案

是的 - 你想要一个 Lookup :

var lookup = list.ToLookup(x => x.Region);

您可以通过分组来创建字典,但我个人更喜欢使用查找,因为它是专门为“单键多值”场景设计的。

关于c# - 用于组织的 Linq 表达式(类似于 Group By 但不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940070/

相关文章:

java - 如何对 map 集合的层次键进行排序?

C# 从数组集合中删除 "partial"重复项

c# - 看门狗桌面应用程序的最佳方式是什么?

c# - 自定义对象 c# 的一个属性的最小值的 LINQ 索引

c# - 绑定(bind)到 ScrollViewer 的 ViewportWidth 和 ViewportHeight

c# - 连接多个集合之前进行空检查

php - 错误 : Call to undefined method addAttributeToFilter()

c# - VC++和C#如何编写托管DLL或非托管DLL?

c# - 在枚举值上使用 Where

c# - 如果不调试,Linq to Entity Framework 返回值会导致错误