我有一个问题,请给 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/