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

时间:2013-09-01 19:16:19

标签: 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();

但是有关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)'的方法,而且此方法无法转换为仓库表达式”

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:5)

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