2016-06-02 8 views
0

Я работаю над своим проектом web api, я использую сущность framework 6. Мне нужно написать LinqToEntity для извлечения строк по последней дате и unitId.Напишите LinqToEntity для извлечения строк по последней дате и unitId

Например:

Вот мой стол:

Id|UnitId | NumberP | DateMeasure 
    1|14  |num1  |2008-01-20 13:10:22.000 
    2|32  |num2  |2010-05-20 13:11:38.000 
    3|48  |num3  |2011-08-20 13:10:18.000 
    4|85  |num4  |2015-11-20 14:10:22.000 

    5|14  |num5  |2010-05-20 13:11:38.000 
    6|32  |num6  |2010-05-20 13:12:38.000 
    7|85  |num7  |2014-11-20 17:20:32.000 

А вот записи, что мне нужно, чтобы получить из таблицы с помощью LinqToEntity:

Id|UnitId | NumberP | DateMeasure 
    3|48  |num3  |2011-08-20 13:10:18.000 
    4|85  |num4  |2015-11-20 14:10:22.000 
    5|14  |num5  |2010-05-20 13:11:38.000 
    6|32  |num2  |2010-05-20 13:12:38.000 

Вот что я пробовал:

var t2 = from s in unitOfWork.SensorsMeasure.GetAll() 
       group s by s.SensorUnitId into g 
       select new 
       { 


       }; 

Af ter Я группирую его, как я могу заказать его по дате?

Как создать запрос LinqToEntity для получения желаемого результата?

+0

Звуки довольно стандартный - группы 'UnitId', порядок убывания каждой группы' DateMeasure' и принять первый элемент. В чем проблема? –

+0

Иван, я обновляю свой вопрос, возможно, вы это видите? Я группирую iyems по UnitId. Но как тогда я могу заказать по дате ech group.please, помогите мне. – Michael

ответ

1

Вы можете использовать let clause, чтобы получить элемент каждой группы, что вы заинтересованы в:

var t2 = from s in unitOfWork.SensorsMeasure.GetAll() 
     group s by s.SensorUnitId into g 
     let latest = g.OrderByDescending(s => s.DateMeasure).FirstOrDefault() 
     select new 
     { 
      UnitId = g.Key, 
      NumberP = latest.NumberP, 
      DateMeasure = latest.DateMeasure 
     }; 
+0

Иван, спасибо вам за помощь! – Michael