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 に答える