2012-08-02 231 views
2

任何人都可以帮助我如何转换以下C#代码来使用LINQ到SQL?通过使用LINQ to SQL,它会执行得更快还是仍然与下面一样?linq for for循环内foreach循环

foreach (var a in all) 
    { 
     for (int i = 0; i < a.Items.Length; i++) 
     { 
      if (a.Items[i].Item.TruckItemID.Equals(CarItem.CarItemID)) 
       { 
        allItems = a.Items[i]; 
       } 
     } 
    } 
+2

像resharper这样的工具经常建议loop到linq转换,并且可能是学习的好方法:http://www.jetbrains.com/resharper/ – peacemaker 2012-08-02 15:53:49

回答

5

看起来像你想要的东西,如:

allItems = all.SelectMany(a => a.Items) 
       .Where(a => a.Item.TruckItemID.Equals(CarItem.CarItemID)); 

请记住,虽然,执行是不会加快。 LINQ将把你的查询扩展成几乎相同的代码。

+0

感谢您的信息。我一直认为linq会执行得更快。很好的知道/未来的参考。 – Calvin 2012-08-02 16:03:17

1

Linq 2 Sql是一种将LINQ转换为SQL命令并在数据库上执行它们的数据库访问技术。它将数据返回到内存集合中。由于for循环非常原始,如果使用得当,它们的速度往往很高。一旦开始嵌套循环,随着数据增加O(n^2),您的操作将呈指数级变慢。