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}”);
}
}

为什么
平均寿命
a
string
?看起来应该是某种数字类型的比较。@HereticMonkey谢谢,我忘了这就是我要找的@举个简单的例子,我错了!使用GroupBy、OrderByDescending和FirstOrDefault。