此代码生成运行时错误:
struct MyStruct {
public int ID;
public string Desc;
}
...
var q = db.MyTable.Select(t => new MyStruct { ID = t.ID, Desc = t.Desc });
发生错误是因为该结构没有无参数构造函数。但我不能使用显式构造函数,因为没有 SQL 翻译。
我的第一个问题是为什么这不会产生编译时错误——编译器知道这MyStruct
是一个结构,并且我不能在这个不存在的无参数构造函数上使用对象初始化器。
但更重要的问题是,这是 Linq2Entities 的已知限制,您必须使用类而不是结构吗?