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