Linq最新的一组记录

时间:2014-01-25 00:01:20

标签: c# linq

(LINQ)

我有一个简单的对象让我们在一个简单的狗列表中调用Dog

Dog
  Id  (Unique)
  GroupBarkId
  Name

我需要让所有拥有相同最高 GroupBarkId的狗

Id   GroupdBarkId
1    2
2    2
3    2
4    3
5    3
6    3

所以我需要列表,在这种情况下, GroupBarkId等于3

我在查询时不知道最高的GroupBarkId

2 个答案:

答案 0 :(得分:2)

您可以使用Enumerable.GroupBy + OrderByDescending

List<Dog> dogsWithHighestGroupBarkId = dogs
    .GroupBy(d => d.GroupBarkId)
    .OrderByDescending(grp => grp.Key)
    .First()
    .ToList()

答案 1 :(得分:2)

var dogs = db.Dogs.Where(d => d.GroupdBarkId == db.Dogs.Max(d => d.GroupdBarkId))
                  .ToList();

或首先获得最大ID:

var id = db.Dogs.Max(d => d.GroupdBarkId);
var dogs = db.Dogs.Where(d => d.GroupdBarkId == id)
                  .ToList();