日期:2014-05-17  浏览次数:21626 次

c# lambda取最大值

比如我有一个类 testLambdaMax

    public class testLambdaMax
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    testLambdaMax[] lmax= new testLambdaMax[]{
            new testLambdaMax(){Id=1,Name="A"},
            new testLambdaMax(){Id=2,Name="B"},
            new testLambdaMax(){Id=3,Name="C"},
            new testLambdaMax(){Id=4,Name="D"}
        };

该如何用lambda取id的最大值?谢谢

------解决方案--------------------
lmax.Where(o => o.Name == "B").Select(o => o.Id).Max()
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
testLambdaMax s = lmax.FirstOrDefault(x => x.Id == lmax.Max(y => y.Id) && x.Name == "B");
id已经是最大id,为4了。还来个并且name为B的?你看看你的数据中,id为4的name不是为d吗?当然为null了。
------解决方案--------------------
这样写只要一步就可以了,速度应该最快。
lmax.OrderByDescending(t => t.Id * (t.Name == "B" ? 1 : 0)).First();