В коде Im поддерживается общий шаблон, такой как следующий, вложенный цикл с if, чтобы найти определенные элементы.LINQ vs inested loop
foreach (Storage storage in mStorage.Values)
foreach (OrderStorage oStorage in storage.OrderStorage)
if (oStorage.OrderStorageId == orderStorageId)
Я думал, чтобы изменить это в LINQ:
foreach (OrderStorage oStorage in (from storage in mStorage.Values
from oStorage in storage.OrderStorage
where oStorage.OrderStorageId == orderStorageId
select oStorage))
Но это не кажется, все, что привлекательным, потому что это менее прозрачны, что происходит здесь, больше объектов могут быть созданы калькуляции производительности с точки зрения как памяти и процессора. Будет ли создано больше объектов или компилятор C# испускает код, похожий на вложенный цикл с if, если внутри?
[Если у вас есть две лошади, и вы хотите знать, какая из них быстрее, чем ** расы ваших лошадей **.] (Http://ericlippert.com/2012/12/17/performance-rant/) –