【发布时间】:2014-03-16 14:51:31
【问题描述】:
如何将以下 2 个 foreach 嵌套循环转换为 LINQ 查询?执行这个包含大约 610 个项目的循环大约需要 10 秒。另外,下面的代码行是否有任何更新可以更改,从而可以稍微提高性能并减少执行时间?
代码:
foreach(var map in infoMap)
{
var testItem = map.TestItem;
var testInViews = TestviewMaps;
var testWorkbenchItem = map.TestWorkbenchItem;
string TestLinkType = string.Empty;
WorkItemLinkCollection testLinkedWorkItems = testItem.WorkItemLinkHistory;
if (linkedWorkItems != null && linkedWorkItems.Count > 0)
TestLinkType = linkedWorkItems[0].LinkTypeEnd.LinkType.ReferenceName;
else if (testItem != null)
TestLinkType = testItem.Store.WorkItemLinkTypes.LinkTypeEnds["Parent"].LinkType.ReferenceName;
foreach (var testViewMap in testInViews)
{
if (!string.IsNullOrEmpty(TestLinkType))
{
var testLinkName = TestLinkType;
var testChildType = testViewMap.ChildType;
ITestLinkItem testItm = Factory.BuildLinkItem(testLinkName,testWorkbenchItem,testWorkbenchItem);
lock (TestAddparents)
{
TestAddparents.Add(testItm);
}
break;
}
}
}
【问题讨论】:
-
LINQ 不是可以立即让您的代码运行得更快的黑魔法。
-
@ken2k,或者任何其他方式,可以减少代码的执行时间。
-
@ken2k - 实际上有几篇文章由于它提供的可能性,LINQ 代码将需要更长的时间来执行,而不是更具体的每个查询
标签: .net linq c#-4.0 foreach parallel.foreach