如何根据字段Entity Framework 4.1的最大值选择行(对象)

时间:2012-02-29 10:30:17

标签: c# asp.net entity-framework linq-to-entities

我正在尝试根据RollNumber的最大值Datatype field得到一行(对象)。我希望它返回一个空对象以防万一没有我使用SingleorDefault。但似乎我的查询都是错的(这里的linq正在进行中)。 这是查询:

SchoolContextExpress db = new SchoolContextExpress();
        Profile profile = db.Profiles.Where(p => p.RollNumber == db.Profiles.Max(r=>r.RollNumber)).SingleOrDefault();

感谢您阅读本文。

2 个答案:

答案 0 :(得分:9)

使用空RollNumber ...

Profile profile = db.Profiles.Where(p => p.RollNumber !=0 &&  p.RollNumber == db.Profiles.Max(r=>r.RollNumber)).SingleOrDefault();

或者您可能想要考虑......

Profile profile = db.Profiles.Where(p => p.RollNumber == db.Profiles.Where(p1 => p1.RollNumber != 0).Max(r=>r.RollNumber)).SingleOrDefault();

答案 1 :(得分:3)

第一个答案旁边的另一种方法:

Profile profile = db.Profiles.OrderByDescending(p => p.RollNumber).FirstOrDefault();