繁体   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