2011-10-04 101 views
3

我使用PredicateBuilder和從Albahari LINQKit構建一個LINQ查詢具有可選參數,可選OrderBy,可選Skip()和可選Take()。IQueryable可選OrderBy與PredicateBuilder和實體框架

PredicateBuilder可以很容易地構建可選參數,但我遇到了其他問題。爲了簡化問題:

這工作

var query = this.MyContext.Things.AsExpandable.Where(predicate).OrderBy(s => s.Name); 
return query.ToList(); 

我想要做這樣的事情,這樣我就可以在如果包裹排序依據。但它不起作用,結果不是按名稱順序排列的。

var query = this.MyContext.Things.AsExpandable().Where(predicate); 
query.OrderBy(s => s.Name); 
return query.ToList(); 

有人可以指出我在正確的方向嗎?我是一個NHibernate的轉換,並仍然與LINQ握手。

回答

7

你缺少一個重新分配給您的query變量 - OrderBy()(所有其他標準的查詢操作相同)返回一個新IQueryable<T>

query = query.OrderBy(s => s.Name); 
+0

謝謝!當你的大腦陷入不同的做事方式(比如NHibernate)時,很容易錯過簡單的事情。 – NickH