【问题标题】:How to convert the following code to LINQ format?如何将以下代码转换为 LINQ 格式?
【发布时间】:2014-03-18 03:01:44
【问题描述】:

代码:

foreach (var testType in projectData.TestTypes.OrderBy(it => it.TestName))
{
     var testList = new TestList
     {
          benchTestTypeName = testType.TestName,
          DataProvider = this.projectDataService.CurrentDataProvider,
          ProjectData = projectData
     };
     this.tabItems.Add(new TabItem { Header = testType.TestName, Content = testList });
}

如何将上述代码转换为LINQ格式?如果我们转换为Linq,执行时间会不会有一点改善(i.e),执行时间是否可以减少一点?截至目前,15 TestTypes 大约需要 4 到 5 秒。

【问题讨论】:

  • LINQ 不会提高性能。我不明白为什么人们会这么想。他们显然混淆了实体框架和 LINQ 的执行方式。 LINQ 只是表达要发生的语句的另一种方式。因此,如果您说执行需要 4-5 秒,那么 LINQ 不一定会改善这一点。这取决于需要改进的代码本身。您可能指的是延迟执行。
  • @Ahmedilyas LINQ 是主流,所以所有需要 LINQ :-)

标签: .net performance linq c#-4.0 foreach


【解决方案1】:

试试下面的:

var items = projectData.TestTypes
                       .OrderBy(it => it.TestName)
                       .Select(testType=> new TestList
                       {
                           benchTestTypeName = testType.TestName,
                           DataProvider = this.projectDataService.CurrentDataProvider,
                           ProjectData = projectData
                       });

foreach(var item in items)
   tabItems.Add(new TabItem { Header = item.benchTestTypeName, Content = item });

【讨论】:

  • Header = item.TestName 中,TestName 未填充。
  • @JohnStephen 你是对的。我刚刚纠正了它。谢谢!
  • 谢谢,现在代码执行时间减少了1秒。
猜你喜欢
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多