创建Linq查询时出错

vcR*_*obe 14 .net c# linq linq-to-objects entity-framework

我有一个像这样的查询

struct MyStruct
{
  public string name;
  public double amount;
}

var a =
  from p in Products
  select new MyStruct
  {
    name = p.Name,
    amount = p.Amount
  };
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,我得到以下异常:

System.NotSupportedException {"LINQ to Entities中仅支持无参数构造函数和初始值设定项."}

但是,如果我将MyStruct的类型更改为类,那么它将按预期工作.

为什么它适用于并且使用struct失败?

Shl*_*omo 3

它与 LinqToObjects 一起使用。我猜 LinqToEntities 不知道如何创建结构。如果你这样做,你会没事的:

struct MyStruct
{
  public string name;
  public double amount;
}

var a = Products.AsEnumerable()
    .Select(p => new MyStruct
    {
        name = p.Name,
        amount = p.Amount
    };
Run Code Online (Sandbox Code Playgroud)