Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 要组织的Linq表达式(sorta-like Group By,但不同)_C#_Linq_Collections_Generic Programming - Fatal编程技术网

C# 要组织的Linq表达式(sorta-like Group By,但不同)

C# 要组织的Linq表达式(sorta-like Group By,但不同),c#,linq,collections,generic-programming,C#,Linq,Collections,Generic Programming,假设我有一个相当大的IList,其中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项进行“

假设我有一个相当大的
IList
,其中
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项进行“分组”,这样我就可以得到一个
索引
,并将
字符串
键作为
区域
属性,每个下属
IList
只包含与该区域匹配的
foo
记录?(它不必是一个
IDictionary
,这只是为了说明我要做的事情的要点。)我想以这种方式向我的MVC视图提供一个交互式列表,而不必编写相对复杂的东西或使用第三方库。

IList foos=//随便什么
IList<Foo> foos = //whatever
var groups = foos
    .GroupBy(f => f.Region)
    .ToDictionary(grp => grp.Key, grp => grp.ToList());
变量组=foos .GroupBy(f=>f.Region) .ToDictionary(grp=>grp.Key,grp=>grp.ToList());
IList foos=//随便什么
变量组=foos
.GroupBy(f=>f.Region)
.ToDictionary(grp=>grp.Key,grp=>grp.ToList());
是-您需要:

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

是-您想要:

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

IList foos=//随便什么
变量组=foos.ToLookup(f=>f.Region);
一个
ILookup
就像一个字典,但是每个键都引用一个值列表,而不是一个值。

IList foos=//随便什么
变量组=foos.ToLookup(f=>f.Region);

ILookup
类似于字典,但每个键都引用一个值列表,而不是一个值。

Hmm。也许我假设GroupBy类似于SQL GroupBy。这对我来说似乎是不正确的。好吧,我想那就是答案了!嗯。也许我假设GroupBy就像SQL GroupBy一样。这对我来说似乎是不正确的。好吧,我想那就是答案了!哈,所以它是GroupBy。。。我只是假设这是相对于SQL Server的聚合函数。。。我只是假设这是相对于SQL Server的聚合函数。
var lookup = list.ToLookup(x => x.Region);
IList<Foo> foos = //whatever

var groups = foos.ToLookup(f => f.Region);