【发布时间】:2014-07-01 07:52:36
【问题描述】:
我有一个与LINQ: How to remove element from IQueryable<T> 类似的查询,并且大部分都回答了我的问题。
我的代码设置类似:
var items = MyDataContext.Items.Where(x =>MyFunction(x.value1, x.value2, x.value3));
...
...
bool MyFunction(decimal val1, decimal val2, decimal val3)
{
//some calculation with the parameters
return true;
}
它编译得很好,但是当我运行它时,它会抛出一个错误:
“'System.NotSupportedException' 类型的异常发生在 System.Data.Entity.dll 但未在用户代码中处理
附加信息:LINQ to Entities 无法识别该方法 '布尔 MyFunction(System.Decimal,System.Decimal,System.Decimal)' 方法,并且该方法不能翻译成商店表达式。”
我是 linq 的新手,这周才开始,所以感谢任何帮助。谢谢!
【问题讨论】:
-
您是否使用此调用查询数据库?
-
在查询数据库时不能编写相同类型的 Linq 查询。要么运行
MyDataContext.Items.ToList().Where(..),首先从数据库中获取所有Items,然后运行where() 性能不佳。否则重写您的Where查询以支持Linq To Sql -
是的,我正在查询数据库
-
@RobertFricke,嗨,我不太了解第一个选项。你的意思是获取所有项目,然后运行另一个 where() 查询?
-
和@Serv的回答一样
标签: c# linq iqueryable