Исходя из Java, я новичок в C # и LINQ.В нашей кодовой базе есть много запросов, которые, похоже, построены не оптимально.В следующем запросе лямбда-выражение GroupBy создает анонимный тип данных.Я не могу найти примеры онлайн, где GroupBy используется таким образом.Есть ли способ упростить этот запрос и при этом вернуть те же результаты?
List<MachineMetrics> machines = prod.Where(p => p.TimeProduced >= start &&
p.TimeProduced <= end &&
(jobID == -1 ? true : (p.JobID == jobID && p.Job.MachineID == MachineID))).
GroupBy(x => new
{
MachineName = x.Job.Machine.MachineName,
MachineID = x.Job.MachineID,
JobName = x.Job.JobName,
JobID = x.JobID
}).
Select(item => new MachineMetrics()
{
MachineName = item.Key.MachineName,
MachineID = item.Key.MachineID,
JobName = item.Key.JobName,
JobID = item.Key.JobID
}).
ToList<MachineMetrics>();
edit: Спасибо за помощь.Проблема заключалась в том, что методы Equals () и GetHashCode () не были реализованы для класса.Как только я добавил их, я использовал код, предложенный @Ladislav Mrnka, и все заработало, как и ожидалось.