C# 在对象列表中按类别获取特性的最大值
有关动物类对象的列表C# 在对象列表中按类别获取特性的最大值,c#,linq,C#,Linq,有关动物类对象的列表 public class Animal { public int id { get; set; } public string name{ get; set; } public string category { get; set; } public int avg_lifespan { get; set; } } 如何按类别返回平均寿命最高的动物 e、 g.我有一个5类50只动物的数据集,我想为每个类别返回平均寿命最高的动物 到目前为止,
public class Animal
{
public int id { get; set; }
public string name{ get; set; }
public string category { get; set; }
public int avg_lifespan { get; set; }
}
如何按类别返回平均寿命最高的动物
e、 g.我有一个5类50只动物的数据集,我想为每个类别返回平均寿命最高的动物
到目前为止,我有一个LINQ语句,它返回不同的类别:
var categories = animals.SelectMany(e => e.category).Distinct();
我的想法是遍历动物对象列表,对于列表中的每种动物,用相应动物的平均寿命增加一些值。如何才能更优雅地完成此操作?U还可以在linq中使用groupby、select和aggregate函数,如下所示
static void Main()
{
IEnumerable<Animal> animals =
new List<Animal>()
{
new Animal{ category="A",avg_lifespan=1},
new Animal{ category="A",avg_lifespan=2},
new Animal{ category="B",avg_lifespan=3},
new Animal{ category="B",avg_lifespan=5},
new Animal{ category="B",avg_lifespan=7}
}
.GroupBy(x => x.category)
.Select(x => x.Aggregate((f, s) => f.avg_lifespan >= s.avg_lifespan ? f : s));
foreach (var animal in animals)
{
Console.WriteLine($"category: {animal.category} \t avg_lifespan: {animal.avg_lifespan}");
}
}
static void Main()
{
数不清的动物=
新名单()
{
新动物{category=“A”,平均寿命=1},
新动物{category=“A”,平均寿命=2},
新动物{category=“B”,平均寿命=3},
新动物{category=“B”,平均寿命=5},
新动物{category=“B”,平均寿命=7}
}
.GroupBy(x=>x.category)
.选择(x=>x.聚合((f,s)=>f.avg_寿命>=s.avg_寿命?f:s));
foreach(动物中的动物变量)
{
Console.WriteLine($“category:{animal.category}\t平均寿命:{animal.avg_lifespan}”);
}
}
为什么平均寿命astring
?看起来应该是某种数字类型的比较。@HereticMonkey谢谢,我忘了这就是我要找的@举个简单的例子,我错了!使用GroupBy、OrderByDescending和FirstOrDefault。