Рейтинг. Linq to sql вопрос - PullRequest
0 голосов
/ 26 июня 2010

У меня есть таблица заказов, сделанных персонами:

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?

Заранее спасибо!

1 Ответ

2 голосов
/ 26 июня 2010

Примерно так:

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...