IQueryable和排序

Rah*_*sra 0 linq

看起来在收到IQueryable之后,我无法修改查询以启用排序.这是代码片段.我的印象是,使用IQueryable(而不是IEnumerable)我应该能够做我正在尝试的事情.

using (oc1 = new NWEntities())
{
    string customerid = "ALFKI";
    var q = GetOrders((o) => o.CustomerID == customerid);

    q.OrderBy(o => o.ShipCity);   // DOES NOT WORK !!!!!!!!
    foreach (var x in q)
    {
        Console.WriteLine(string.Format("Order#:{0} City:{1} for Customer {2}",
                                    x.OrderID,
                                    x.ShipCity,
                                    customerid));
    }
}

// Returns IQueryable
IQueryable<Order> GetOrders(Expression<Func<Order, Boolean>> predicate)
{            
    return (oc1.Orders.Where(predicate));            
}
Run Code Online (Sandbox Code Playgroud)

输出以某种方式不按城市排序.我错过了一些明显的东西吗 感谢您的时间.

mel*_*okb 5

您需要将结果存储OrderBy在另一个变量中.您对列表进行了排序,然后以静默方式删除结果,并对原始文件进行了迭代:

var q = GetOrders(...);

// notice I store in **q2**
var q2 = q.OrderBy(o => o.ShipCity);
foreach (var x in q2)
Run Code Online (Sandbox Code Playgroud)