我想知道是否可以從linq表達式/查詢運算符中添加/刪除where子句。我們可以從linq表達式中刪除子句嗎?
如: -
var qry = from e in emp where(e => e.salary > 5000) select e;
是否可以刪除其中的表達在後面的階段?
感謝提前:)
我想知道是否可以從linq表達式/查詢運算符中添加/刪除where子句。我們可以從linq表達式中刪除子句嗎?
如: -
var qry = from e in emp where(e => e.salary > 5000) select e;
是否可以刪除其中的表達在後面的階段?
感謝提前:)
是的,這是可能的,但你需要實現ExpressionVisitor
類評價複合表達,並根據需要進行更改。除非你正在做相對複雜的事情,否則可能有更好的方法來實現你想要的。
你是唯一真正能夠理解的答案,並試圖回答這個問題。 +1 – 2011-03-03 04:39:59
你只能就我知道
例如,如果試圖刪除基於條件e.salary> 5000調整你的過濾,而是你應該嘗試像
var diffQry = from e in emp where(e => e.salary <= 5000) select e;
我認爲WHERE
子句是必需的,如果有條件查詢。否則(如果沒有條件),您可以使用:
var qry = from e in emp select e;
如果要以編程方式添加和刪除where子句,可以使用查詢運算符。
var query = emp.Select(x => x);
if (someCondition)
query = query.Where(x => x.Price > 50);
您需要擴展您的問題多一點。
@Psycho: - 我想刪除它添加後的位置。 – TCM 2011-03-03 03:48:40
qry
如果是IQueryable<T>
- 例如,一個LINQ到SQL或LINQ到實體查詢 - 那麼它應該是可能的分析基礎表達式樹,並建立一個新的不包括Where
子句。
如果qry
是一個普通的IEnumerable<T>
- 例如,一個LINQ到對象的查詢 - 那麼這是無法完成的,因爲不會有表達式樹來分析。
據我所知,這是不可能的。 – zneak 2011-03-03 03:39:22
你的意思只是:'從e在emp選擇e'? – Equiso 2011-03-03 03:40:02
@Equiso: - 是的。 – TCM 2011-03-03 03:48:00