猿问

群由In LINQ

群由In LINQ

让我们假设如果我们有这样一个类

class Person { 
    internal int PersonID; 
    internal string car  ; }

现在我有了一张这门课的清单:List<Person> persons;

现在,这个列表可以有多个具有相同PersonID的实例,例如:

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把他所有的车都列出来?

例如,预期结果将是

class Result { 
   int PersonID;
   List<string> cars; }

所以分组后,我会得到:

results[0].PersonID = 1; List<string> cars = results[0].cars; result[1].PersonID = 2; List<string> 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

谁能帮我指出正确的方向吗?


小怪兽爱吃肉
浏览 545回答 3
3回答

Cats萌萌

var&nbsp;results&nbsp;=&nbsp;from&nbsp;p&nbsp;in&nbsp;persons&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;p&nbsp;by&nbsp;p.PersonID&nbsp;into&nbsp;g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;new&nbsp;{&nbsp;PersonID&nbsp;=&nbsp;g.Key, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**/car&nbsp;=&nbsp;g.Select(g=>g.car).FirstOrDefault()/**/}

元芳怎么了

var&nbsp;results&nbsp;=&nbsp;from&nbsp;p&nbsp;in&nbsp;persons&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;p&nbsp;by&nbsp;p.PersonID&nbsp;into&nbsp;g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select&nbsp;new&nbsp;{&nbsp;PersonID&nbsp;=&nbsp;g.Key,&nbsp;Cars&nbsp;=&nbsp;g.Select(m&nbsp;=>&nbsp;m.car)&nbsp;};
随时随地看视频慕课网APP
我要回答