Я пытаюсь перевести это:SQL Group By значение столбца в LINQ
SELECT IDNum, Max(Convert(varchar(20), (TimeOut - TimeIn), 108))
FROM IO_Times Group by IDNum
order by Max(Convert(varchar(20), (TimeOut - TimeIn), 108)) desc";
В LINQ в C#. Приведенное выше возвращает список максимального значения (TimeOut-TimeIn), который соответствует каждому уникальному IDNum (для каждого IDNum имеется несколько значений TimeOut-TimeIn).
Вот что я пытаюсь в настоящее время:
from IO_Time in db.IO_Times
orderby SqlMethods.DateDiffMinute(IO_Time.TimeIn, IO_Time.TimeOut) descending
group IO_Time by IO_Time.IDNum into list
select new
{
ID = list.Key,
Time = list
});
Это возвращает правильные идентификаторы в правильном порядке, но «список» содержит все, что в записи базы данных (что имеет смысл). Я также пробовал группу по IDNum и Time, но потом получаю уникальные записи времени и несколько идентификаторов.
Я мог бы сделать цикл foreach и вручную отсортировать все, но я бы действительно не хотел этого делать.
Любые предложения?
Отлично! Я должен чаще использовать лямбда-операции. –
Очень приятно. Что делать, если я хочу присоединиться к другой таблице с именем, которое совпадает с идентификатором? Я просто попробовал просто присоединиться и надеяться, что Имя появится в intellisense, но это не сработало. –