2010-10-21 49 views
3

我知道動態構建Linq查詢的一些努力,例如thisthis使用實體框架的動態Linq查詢

沒有一個看起來很理想,因爲我希望避免將表達式放入字符串中,並且省略了不需要的地方。

我主要關心的是查詢針對數據庫進行了優化,並且儘可能動態地省略了不必要的子句。

這種情況下EF 4.0有什麼新的發展嗎?

UPDATE

這裏是一個鏈接,我發現非常有用: http://www.albahari.com/nutshell/predicatebuilder.aspx 的確,加入「及」過濾器動態是微不足道的,而加入「或」過濾器可以很容易地使用謂詞建設者來完成:

var predicate = PredicateBuilder.False<Product>(); 
predicate = predicate.Or (p => p.Description.Contains (temp)); 

,並根據LinqPad的SQL時發出相應地應用了哪些過濾器..

回答

1

對於省略了其中的原因(僞代碼,希望我理解你的問題心病直接):

var query = IQueryable<Foo>(); 

if(someCondition) 
    query = query.Where(......); 

var result = query.Select(.......); 

對於動態查詢 - 我還沒有聽說過任何新的東西。恕我直言,我們將不得不留在字符串。你能想出更好的方法嗎?