c# - 元组 - LINQ to Entities 中仅支持无参数构造函数和初始值设定项

标签 c# linq entity-framework c#-4.0 tuples

<分区>

我想从数据库中加载一个元组列表。但是,当像下面这样尝试时。我收到错误消息“LINQ to Entities 中仅支持无参数构造函数和初始值设定项”。

List<Tuple<string, DateTime?>> schdule = new List<Tuple<string, DateTime?>>();
schdule = Entities.ScheduleDates.Where(x => x.Code == cCode).Select(x => new Tuple<string, DateTime?>(x.Key, x.Time)).ToList<Tuple<string, DateTime?>>();

但是,通过使用匿名类型,我不会收到任何错误。

var tempSchedule = Entities.ScheduleDates.Where(x => x.Code == cCode).Select(x => new { x.Key, x.Time }).ToList();

为什么我会遇到上述错误。

最佳答案

因为 LINQ to Entities 查询被转换为 SQL 查询,所以您执行的每个操作都必须在 SQL 中具有等效项。

构造函数只不过是方法,无法翻译。

但是实例化一个匿名类型可以,它会被简单地翻译成:

SELECT someAlias.Key, someAlias.Time ...

关于c# - 元组 - LINQ to Entities 中仅支持无参数构造函数和初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115735/

相关文章:

c# - 完成与处置

c# - 如何选择要在 EF 中更新的特定字段

c# - 无法使用 3 层架构添加/更新

entity-framework - 为一个工作单元上的多个 EF 上下文做准备 - TransactionScope

c# - 禁用保存文件对话框的文件名框

c# - 如何检查是否设置了标志组合的任何标志?

c# - 消除 LET 运算符和 SqlFunctions

c# - 如何在 Linq to Sql 的插入或更新中使用 where 子句?

c# - Find() 与 Where().FirstOrDefault()

entity-framework - 到 Postgres 的连接字符串