发布日期:2018-03-26
LINQ中的分组+ 查看更多
LINQ中的分组
+ 查看更多
发布日期:2018-02-23 13:57
分类:C#
浏览次数:168
描述:比如这样一个类
class Person { internal int PersonID; internal string car ; }
建立这个类的对象列表:List
PersonID用相同的ID来实例化:
persons[0] = new Person { PersonID = 1, car = "Ferrari" }; persons[1] = new Person { PersonID = 1, car = "BMW" }; persons[2] = new Person { PersonID = 2, car = "Audi" };
那我可不可以用PersonID分组,并且得到cars的列表。用一个Result类:
分组之后得到:
class Result { int PersonID; Listcars; }
results[0].PersonID = 1; Listcars = results[0].cars; result[1].PersonID = 2; List cars = result[1].cars;
再加上:
var results = from p in persons group p by p.PersonID into g select new { PersonID = g.Key, // this is where I am not sure what to do
到底应该怎么做呢?
解答:
你应该是要这样:
解答:
你应该是要这样:
var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() };
非查询表达式:
var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() } );
基本上分组的内容是一个序列不论给定的属性的值是什么。
想要了解更多的话可以看看 Edulinq post on the topic
想要了解更多的话可以看看 Edulinq post on the topic