0

我有一个人的订单表:

Orders
{ 
  Guid  PersonId, 
  int   Priority, 
  Guid  GoodId 
}

优先级是某个整数。例如:

AlenId   1  CarId
DianaId  0  HouseId
AlenId   3  FoodId
DianaId  2  FlowerId

我想为每个人检索最高优先级的订单:

AlenId   1  CarId
DianaId  0  HouseId

在 T-SQL 中我将使用排名,如何在 Linq-2-Sql 中获得相同的结果?

先感谢您!

4

1 回答 1

2

像这样的东西:

var query = from order in context.Orders
            orderby order.Priority
            group order by order.PersonId into personOrders
            select personOrders.First();

相信这应该可行,但我不知道它的定义如何,就排序后分组而言。这也可行,虽然它有点难看:

var query = from order in context.Orders
            group order by order.PersonId into personOrders
            select personOrders.OrderBy(order => order.Priority).First();

或仅使用点表示法:

var query = context.Orders
                   .GroupBy(order => order.PersonId)
                   .Select(group => group.OrderBy(order => order.Priority)
                                         .First());
于 2010-06-26T11:30:04.133 回答