Возьмем следующий запрос LINQ в качестве примера.Пожалуйста, не комментируйте сам код, поскольку я только что набрал его, чтобы помочь с этим вопросом.
В следующем запросе LINQ используется 'group by' и вычисляется сводная информация.Как вы можете видеть, существует множество вычислений, которые выполняются с данными, но насколько эффективен LINQ за кулисами.
var NinjasGrouped = (from ninja in Ninjas
group pos by new { pos.NinjaClan, pos.NinjaRank }
into con
select new NinjaGroupSummary
{
NinjaClan = con.Key.NinjaClan,
NinjaRank = con.Key.NinjaRank,
NumberOfShoes = con.Sum(x => x.Shoes),
MaxNinjaAge = con.Max(x => x.NinjaAge),
MinNinjaAge = con.Min(x => x.NinjaAge),
ComplicatedCalculation = con.Sum(x => x.NinjaGrade) != 0
? con.Sum(x => x.NinjaRedBloodCellCount)/con.Sum(x => x.NinjaDoctorVisits)
: 0,
ListOfNinjas = con.ToList()
}).ToList();
- Сколько раз список «ниндзя» повторяется вЧтобы вычислить каждое из значений?
- Было бы быстрее использовать цикл foreach для ускорения выполнения такого запроса?
- Будет ли добавление «.AsParallel ()» после результата Ninjasв каких-либо улучшениях производительности?
- Есть ли лучший способ вычисления итоговой информации для List?
Любой совет приветствуется, поскольку мы используем этот тип кода в нашем программном обеспечении, и я бы очень хотелхотелось бы лучше понять, что делает LINQ под капотом (так сказать).Возможно, есть лучший способ?