linq for fore循环中的for循环

时间:2012-08-02 15:52:26

标签: c# sql linq

任何人都可以帮我解决如何将以下c#代码转换为使用linq到sql的问题?通过使用linq到sql,它会执行得更快还是仍然与下面相同?

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 个答案:

答案 0 :(得分:5)

看起来像你想要的东西:

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

但请记住,执行速度不会加快。 LINQ会将您的查询扩展为几乎相同的代码。

答案 1 :(得分:1)

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