我正在使用EF。这是我的 LINQ 查询
public List<Tuple<int, string>> GetList()
{
return (from c in DALContext.MST
select new Tuple<int, string>(c.CD, c.NAME)).ToList();
}
当我调用 GetList() 时,它抛出一个异常:LINQ to Entities 中仅支持无参数构造函数和初始值设定项
相反,当我重写此查询时:
List<Tuple<int, string>> lst = new List<Tuple<int, string>>();
var query= (from c in DALContext.MST
select new{c.CD, c.NAME});
foreach (var item in query)
{
lst.Add(new Tuple<int,string>(item.CD,item.NAME));
}
return lst;
它工作正常。我的第一个查询有什么问题???
最佳答案
其他答案关于正在发生的事情是正确的,但我没有看到任何人提到使您的代码工作的最佳方法:AsEnumerable()
public List<Tuple<int, string>> GetList()
{
return (from c in DALContext.MST.AsEnumerable()
select Tuple.Create(c.CD, c.NAME)).ToList();
}
AsEnumerable
方法作为应该被翻译成 SQL 并在数据库服务器中执行的代码与我们从数据库得到响应后应该在内存中执行的代码之间的边界。将它放在表名之后告诉 EF 从 MST 表中获取所有记录,然后运行以下代码从返回的值创建元组。我换了你的
new Tuple<int, string>
进入 Tuple.Create
主要是因为我不喜欢输入泛型类型参数。
关于asp.net-mvc - LINQ to EF 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295045/