反正是有此代码可重构?唯一的区别是按部分顺序。LINQ查询需要按升序或在同一个查询降
Idealy我想这样的代码可以重复使用,但我不知道如何有条件地添加和删除查询运营商排序依据和OrderByDescending
var linq = new NorthwindDataContext();
var query1 = linq.Customers
.Where(c => c.ContactName.StartsWith("a"))
.SelectMany(cus=>cus.Orders)
.OrderBy(ord => ord.OrderDate)
.Select(ord => ord.CustomerID);
var query2 = linq.Customers
.Where(c => c.ContactName.StartsWith("a"))
.SelectMany(cus => cus.Orders)
.OrderByDescending(ord => ord.OrderDate)
.Select(ord => ord.CustomerID);
很酷。谢谢乔恩。 – 2010-03-29 06:32:01
有点偏题,但上面的代码是否会正确转换到Linq2SQL? IOW能够在构建语法树并生成SQL之前看到“不受支持”的方法并执行它,这足够聪明吗?只是想知道,从来没有尝试过。 :) – leppie 2010-03-29 06:34:28
@leppie:这只是调用现有的Queryable方法 - 这些是构建表达式树的。请注意,此*目前不适用于'IEnumerable',但您可以轻松编写等效的扩展方法。 –
2010-03-29 06:53:52