Sha*_*ica 1 c# linq linq-to-entities entity-framework-5
此代码生成运行时错误:
struct MyStruct {
public int ID;
public string Desc;
}
...
var q = db.MyTable.Select(t => new MyStruct { ID = t.ID, Desc = t.Desc });
Run Code Online (Sandbox Code Playgroud)
发生错误是因为结构没有无参数构造函数.但我不能使用显式构造函数,因为没有SQL转换.
我的第一个问题是为什么这不会产生编译时错误 - 编译器知道这MyStruct是一个结构,并且我不能在这个不存在的无参数构造函数上使用对象初始化器.
但更重要的问题是,这是Linq2Entities的一个已知限制,你必须使用类而不是结构?
1)编译器不知道LINQ To Entities做了什么,它不应该知道.
2)是的,众所周知.
虽然修复了:
var q = db.MyTable
//do your processing here (Where, Any, Join, whatever)
.ToList() //or AsEnumerable or ToArray
.Select(t => new MyStruct { ID = t.ID, Desc = t.Desc });
Run Code Online (Sandbox Code Playgroud)