在收到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));
}
输出以某种方式不按城市排序。我错过了一些明显的东西吗 谢谢你的时间。
答案 0 :(得分:5)
您需要将OrderBy
的结果存储在另一个变量中。您对列表进行了排序,然后以静默方式删除结果,并对原始列表进行了迭代:
var q = GetOrders(...);
// notice I store in **q2**
var q2 = q.OrderBy(o => o.ShipCity);
foreach (var x in q2)