Заказ путем спуска с ошибкой linqC#

Место общения программистов C#
Ответить
Anonymous
 Заказ путем спуска с ошибкой linq

Сообщение Anonymous »

Это в основном любопытство, а не реальная проблема, так как я уже исправил эту ошибку. Я был бы рад получить глубокий ответ, который объясняет механику LINQ, стоящую за этим волшебством. Итак, у меня есть этот запрос: < /p>

Код: Выделить всё

List imsCMMMeasurements =
(from i in context.IMS_CMM_Measurement
where i.Job_FK == jobId
&& currentOperationCharacteristics.Contains(i.Characteristic_FK)
select i)
.GroupBy(elm => elm.Characteristic_FK)
.Select(CharacGroup => CharacGroup.GroupBy(elm => elm.Part_Number))
.Select(CharacGroup => CharacGroup.Select(PartGroup => PartGroup.OrderByDescending(measure => measure.Timestamp)))
.Select(CharacGroup => CharacGroup.Select(PartGroup => PartGroup.FirstOrDefault()))
.Select(CharacGroup => CharacGroup.OrderBy(measure => measure.Part_Number))
.Select(CharacGroup => CharacGroup.ToList()).ToList();
< /code>
По сути, он проводит измерения из базы данных и группирует их по характеристикам. Для каждой характеристики есть несколько мер, которые соответствуют разным частям, и некоторые части измеряются более одного раза. В более позднем случае мы принимаем только самую последнюю меру (такую ​​с наибольшей меткой времени, которая представляет собой запись в формате даты). Чтобы сделать это, я должен заказать меру для каждой части с помощью временной метки в порядке уменьшения. К сожалению, это делает полную противоположность: это требует самой старой меры. 4-я строка): < /p>
List imsCMMMeasurements =
(from i in context.IMS_CMM_Measurement
where i.Job_FK == jobId
&& currentOperationCharacteristics.Contains(i.Characteristic_FK)
select i).ToList()
.GroupBy(elm => elm.Characteristic_FK)
.Select(CharacGroup => CharacGroup.GroupBy(elm => elm.Part_Number))
.Select(CharacGroup => CharacGroup.Select(PartGroup => PartGroup.OrderByDescending(measure => measure.Timestamp)))
.Select(CharacGroup => CharacGroup.Select(PartGroup => PartGroup.FirstOrDefault()))
.Select(CharacGroup => CharacGroup.OrderBy(measure => measure.Part_Number))
.Select(CharacGroup => CharacGroup.ToList()).ToList();
Почему это работает сейчас?


Подробнее здесь: https://stackoverflow.com/questions/384 ... g-bug-linq
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»