是否可以从Linq2Entities查询返回结构?

时间:2013-08-08 15:11:34

标签: 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 });

发生错误是因为结构没有无参数构造函数。但我不能使用显式构造函数,因为没有SQL翻译。

我的第一个问题是为什么这不会产生编译时错误 - 编译器知道MyStruct是一个结构,并且我不能在这个不存在的无参数构造函数上使用对象初始化器。 / p>

但更重要的问题是,这是Linq2Entities的一个已知限制,你必须使用类而不是结构?

1 个答案:

答案 0 :(得分:6)

1)编译器不知道LINQ To Entities做了什么,它不应该。

2)Yes, it is known

虽然修复了:

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 });