EF OrderBy直接在数据上下文中

时间:2018-07-22 16:15:15

标签: c# entity-framework linq

通常我使用完整的:

    var variable = (from r in db.mytable 
where r.field == 2 select r).tolist();

但是,如果我只是在做类似的事情:

 foreach (string p in db.mytable)
                    {
                       //do something here
                    }

如何使用OrderBy?

2 个答案:

答案 0 :(得分:0)

首先,我建议使用LINQ; 其次,最好使用Async和TASK模式以避免死锁; 第三,使LINQ Query AsQueryable成为可能,以便所有排序和筛选器都将适当地放在SQL Server上,而不在您的应用程序之内。

从Microsoft:https://msdn.microsoft.com/en-us/library/bb549264(v=vs.110).aspx

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}


public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    // Sort the Pet objects in the array by Pet.Age.
    IEnumerable<Pet> query =
        pets.AsQueryable().OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
}

答案 1 :(得分:-1)

foreach不适用于LINQentities。如果必须应用foeach,则需要将数据带入内存,而将所有数据带入内存绝对不是一个好主意。

我不解释为什么您需要foreach,如果您能告诉场景,它将更加有帮助。但是,如果仍然需要foreach,请使用以下代码

 var variable = (from r in db.mytable 
                 where r.field == 2 select r)
                .OrderBy(x=>x.Some_r_property)
                .ToList();

 foreach (var p in variable)
                    {
                       //do something here
                    }