asp.net-mvc - LINQ to EF 有什么问题?

标签 asp.net-mvc linq-to-entities

我正在使用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/

相关文章:

asp.net-mvc-3 - asp.net mvc 3 通过第一个字母分隔 linq 结果

c# - 获取表中所有记录的样本

angularjs - 如果动态加载,ASP.NET MVC 包将不会更新

java - Spring MVC - 不支持请求方法post

c# - 为什么发布后日期格式不对?

visual-studio-2010 - 在 Visual Studio 中查看为 Entity Framework Save Changes 命令生成的 SQL?

c# - Linq 如果 DateTime 字段早于 X 小时

asp.net - LINQ 实体Where 子句位置不正确

asp.net-mvc - .NET MVC 禁用浏览器缓存的最佳方法是什么?

asp.net-mvc - 包装 IHttpActionResult - 通用解决方案