转换方法在LINQ中不起作用?

jst*_*rdo 0 c# entity-framework

根据此页面http://msdn.microsoft.com/en-us/library/bb399342.aspx,转换方法应该工作,但是,它们不起作用.

我有这个代码:

var funcionario = (from f in _db.Funcionario
                   where f.FunId == Convert.ToDecimal(funId)
                   select f).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是有关ToDecimal转换的运行时错误.

"LINQ to Entities no reconoceelmétodo'System.DecimalToDecimal(System.String)'delmétodo,yestemétodonose puede traducir enunapxresióndealmacén."

任何帮助都会受到欢迎.我在.NET 4.5中.

编辑:对于那些需要翻译错误信息的人:"LINQ to Entities无法识别方法'System.Decimal ToDecimal(System.String)'的方法,而且这个方法无法翻译成仓库表达式"

Mar*_*zek 6

Convert在调用LINQ查询之前,您可以轻松地获取该值.

decimal funIdDec = Convert.ToDecimal(funId);
var funcionario = (from f in _db.Funcionario
                   where f.FunId == funIdDec
                   select f).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要在查询中转换值,则可以使用SqlFunctionsEntityFunctions类.它们包含一组具有相应SQL函数的方法,可用于执行此类操作.


Dan*_*ite 5

funId手前转换.其中的linq表达式在运行时由EF转换为SQL等价.并非所有功能都受支持.