【发布时间】:2014-02-22 11:59:22
【问题描述】:
我有一个查询并将其交给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 表达式,但运行动态表达式有同样的问题。
如何给Entity Frameworkenter一个lambda表达式形式的方法?
【问题讨论】:
-
报错说
GetType不能转换成SQL语句,所以根本不能这样做。您可以直接转换为IEnumerable<Item>并调用Enumerable.Select。 -
谢谢@Lee。我想从实体框架中获取实体列表。但并非所有实体字段,假设我只想要实体的“Id”。所以我必须创建一个查询,将必填字段作为新的动态类型(匿名类型)。现在我需要知道主要实体的类型,所以我尝试使用 GetType 方法将实体类型获取到表达式主体中。不幸的是,它不起作用。如何做到这一点?
-
也许问题应该是:为什么需要类型?显然,您有一个要按基本类型查询的继承树。 A 假设在查询之后,您会根据类型分支到不同的行为。或许你可以转一下:先分支,然后分别获取每个分支需要的子类型。
标签: entity-framework lambda expression