【发布时间】:2017-01-03 14:09:24
【问题描述】:
我有一个人列表,其中包含一个人的体重、年龄、城市和姓名属性。
Person.cs:
public class Person
{
public int Weight { get; set; }
public int Age { get; set; }
public string Name {get; set;}
public string City {get; set;}
}
程序.cs:
List<Person> personList = new List<Person>();
personList.Add(new Person { Age = 15, Weight = 68, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 19, Weight = 75, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 17, Weight = 68, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 15, Weight = 55, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 15, Weight = 53, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 17, Weight = 88, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 19, Weight = 45, Name = “Dany”, City =”New York” });
personList.Add(new Person { Age = 20, Weight = 88, Name = “Dany”, City =”New York” });
//Grouped person list
List<People> GroupedPersonList = new List<People>();
var GroupedPersonList = personList.GroupBy(x => x.Age , (key,element) => new
{
Age = key,
Weight = element.Max(c=>c.Weight)
City = ????,
Name = ?????
});
应列出的元素:按年龄分组,每个组应选择权重最高的。(我想按年龄排序此列表,但该列表仅包含该年龄最重的人。然后我将创建一个新列表通过这个。)新的新列表应该是这样的:
(GroupedPersonList 内容)=>
年龄 |重量 |名称 |城市
-------|------- |------|--------
15 | 68 |丹妮 |纽约
17 | 88 |丹妮 |纽约
19 | 75 |丹妮 |纽约
20 | 88 |丹妮 |纽约
foreach (var item in GroupedPersonList)
{
string city = item.City; // Error because No city in list
}
我可以这样分组。但我只能使用 2 个属性(年龄和体重)。我还需要分配这些参数。如何分配其他参数?如何在 LINQ 提取方法中做到这一点?
【问题讨论】: