2015-01-13 2 views
0

Вот пример таблицы, в которой я собираюсь извлечь записи с наивысшим приоритетом, соответствующий каждой паре ID и кода, как показано ниже:Как использовать группу, на несколько столбцов с функцией Max

Вот мой подход, чтобы поразить марку:

var max = from item in items 
      group item by new {item.code, item.id} into r 
      select new MyObjectType(r.Select(q => q.code), 
            r.Select(q => q.id), 
            r.Max(q => q.priority)); 

Но результат нулевой ...

Любая идея, чтобы решить эту проблему ?!

Edit:

Вот краткий пример:

(code,id,priority) 

(1,10,100) 
(1,10,200) 
(1,11,300) 
(1,11,400) 
(2,12,500) 
(2,12,600) 
(2,13,700) 
(2,13,800) 

И результат запроса должен быть:

(1,10,200) 
(1,11,400) 
(2,12,600) 
(2,13,800) 
+0

Можете ли вы показать то, что данные означает инкассо пунктов –

+0

@EhsanSajjad: Пожалуйста, проверьте обновление – Roboticist

+0

@main король проверить мой пост это поможет –

ответ

2

Обнародовать свойства в классе и сделать так:

var max = from item in items 
      group item by new {item.code, item.id} into r 
      select new MyObjectType 
       { 
        Code = r.Key.code, 
        Id = r.Key.id, 
        MaxValue = r.Max(q => q.priority) 
       }; 

Ваш класс должен выглядеть следующим образом:

public class MyObjectType 
{ 
    public int Code { get; set; } 
    public int Id { get ; set; } 
    public int MaxValue { get; set; } 
} 
+0

Это забота, спасибо ... Вы имеете в виду, что единственной причиной для нулевого вывода было отсутствие заполнения ссылок на поля объекта класса?! ... – Roboticist

+0

Вы передавали их в конструкторе, и вы не показывали реализацию класса, как вы это делаете, но обычно это путь используется –

Смежные вопросы