[英]LINQ to SQL translation to SQL of custom method
有沒有辦法將表達式轉換為SQL以與LINQ to SQL一起使用?
例如,我有一個比較兩個值的方法。
例:
MyComparer.Compare(value1, value2, ">") return value1 > value2
MyComparer.Compare(value1, value2, "=") return value1 == value2
MyComparer.Compare(value1, value2, "<=") return value1 <= value2
我想要一個像這樣的查詢:
var list = from i in dataContext.items
where MyComparer.Compare(i.value, someValue, "some operator")
select ...
這不起作用,因為很明顯, MyComparer
不會轉換為SQL。
也許這是一個扭曲的問題,但我怎樣才能將此方法轉換為SQL或這可能嗎?
最務實的選擇可能是組合:
// build the core query
var list = from i in dataContext.items
// most of your query
select ...
// compose the value-filter if required
switch(someOperator) {
case "=": list = list.Where(row => row.value1 == row.value2); break;
case ">": list = list.Where(row => row.value1 > row.value2); break;
case "<": list = list.Where(row => row.value1 < row.value2); break;
}
// now use "list"
如果你需要一些可重復使用的東西,你將不得不自己動手(並且可能正在解析)表達式樹( System.Linq.Expression
)。 不是微不足道的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.