簡體   English   中英

LINQ to SQL轉換為自定義方法的SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM