我维护的代码有一个像下面这样的通用模式,一个带有 if 的嵌套循环来查找某些元素。
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))
但这似乎并不那么吸引人,因为这里发生的事情不太透明,可能会创建更多对象,从而在内存和 cpu 方面消耗性能。实际上是否会创建更多对象,或者 C# 编译器是否会发出类似于嵌套循环的代码,其中包含 if ?