entity-framework - 如何调用 lambda 表达式中的方法在 Entity Framework 中运行?

标签 entity-framework lambda expression

我有一个问题,请给 Entity Framework运行:

using (var context = new MyEFContext())
{
    var result = context.Items.Select(item => new {Type = item.GetType()}).ToList();
}

但是我在调​​用系统方法时遇到了异常,例如 GetType() :(
LINQ to Entities does not recognize the method 'System.Type GetType()' method,
and this method cannot be translated into a store expression.

我尝试动态创建 lambda 表达式,但运行动态表达式有同样的问题。
如何以 lambda 表达式的形式将方法提供给 Entity Frameworkenter ?

最佳答案

您只需要在 Select() 之前调用 ToList()

using (var context = new MyEFContext())
{
    var result = context.Items.ToList().Select(item => new {Type = item.GetType()}).ToList();
}

这将首先执行由 Entity Framework 执行的 context.Items.ToList() 部分,然后 Select 在 EF 之外的本地列表中工作

如果你只想要一个字段
var result = (from item in  context.Items
select new 
{ 
field = item.yourfield
}).ToList().Select(p=> new {Type = p.field.GetType()}).ToList();

关于entity-framework - 如何调用 lambda 表达式中的方法在 Entity Framework 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21954004/

相关文章:

C# 连接字符串问题。 EF 代码优先和数据库上下文

c++ - 如何在 C++ 中将转换应用于 STL 映射

java - 常规闭包内部如何工作?

.net - 为什么从表达式动态生成的委托(delegate)比硬编码的 lambda 慢?

c++ - 如何在运行时计算 C++ 表达式类型?

java - 从 float 转换为 double

entity-framework - 不是使用 Azure 上的 Entity Framework 创建的表

entity-framework - EF Code First 当模型需要更改时,有什么方法不必删除 DB?

c# - Linq 中的链查询

linux - [[ 运算符失败,错误为 "conditional binary operator expected"