0

根据此页面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 reconoce el método 'System.Decimal ToDecimal(System.String)' del método, y este método no se puede traducir en una expresión de almacén。”

任何帮助将不胜感激。我在 .NET 4.5 中。

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

4

2 回答 2

6

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

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

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

于 2013-09-01T19:24:22.793 回答
5

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

于 2013-09-01T19:23:17.240 回答