【发布时间】:2023-03-17 01:05:01
【问题描述】:
我正在尝试将下面嵌套的每个循环转换为 Linq。但是我仍然无法成功。
var objAct = new List<InformaticsBenchmarkSummary>();
foreach (var item in op)
{
foreach (var lstTp5 in lstTopFive)
{
if (item.UnitOfOperations.ContainsKey(lstTp5.SystemID))
{
var objIbm = new InformaticsBenchmarkSummary();
objIbm.CompanyId = item.CompanyId;
objIbm.CompanyName = item.CompanyName;
objIbm.LocationId = item.LocationId;
objIbm.LocationName = item.LocationName;
objIbm.UnitOfOperations.Add(lstTp5.SystemID,
item.UnitOfOperations[lstTp5.SystemID]);
objAct.Add(objIbm);
}
}
}
UnitOfOperations 是 Dictionary<int,string>() 类型;op 又是 List<InformaticsBenchmarkSummary>()lstTopFive 是 List<int>()
我试过了,类似这样,但在语法上不成功
var output = from item in op
from lstTp5 in lstTopFive
where item.UnitOfOperations.ContainsKey(lstTp5.SystemID)
let v = new InformaticsBenchmarkSummary()
{
CompanyId = item.CompanyId,
CompanyName = item.CompanyName,
LocationId = item.LocationId,
LocationName = item.LocationName
}
.UnitOfOperations.Add(lstTp5.SystemID, item.UnitOfOperations[lstTp5.SystemID])
select v;
嵌套循环完美运行,但我认为,在此之上的 linq 会提高性能。 感谢任何帮助。
【问题讨论】:
-
ReSharper 可以为您做到这一点。如果您不想购买,可以下载 30 天评估版。
-
大多数情况下,LINQ 不会提高性能,它必须执行您现在正在执行的所有循环。
-
@levelnis 通常可以,但在这种特定情况下,即使是 ReSharper 也无法做到。
标签: c# linq foreach linq-to-entities nested-loops