根据此页面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();
但是有关ToDecimal转换的运行时错误。
“LINQ to Entities no reconoceelétodo'Deystem.Decimal ToDecimal(System.String)'delmétodo,yestemétodonose puede traducir enunaexpresióndealmacén。“
任何帮助都会受到欢迎。我在.NET 4.5中。
编辑:对于需要翻译错误消息的人: “LINQ to Entities无法识别方法'System.Decimal ToDecimal(System.String)'的方法,而且此方法无法转换为仓库表达式”
答案 0 :(得分:6)
在调用LINQ查询之前,您可以轻松Convert
该值。
decimal funIdDec = Convert.ToDecimal(funId);
var funcionario = (from f in _db.Funcionario
where f.FunId == funIdDec
select f).FirstOrDefault();
但是,如果您需要在查询中转换值,则可以使用SqlFunctions
和EntityFunctions
类。它们包含一组具有相应SQL函数的方法,可用于执行此类操作。
答案 1 :(得分:5)
预先转换funId
。其中的linq表达式在运行时由EF转换为SQL等价物。并非所有功能都受支持。