【问题标题】:Assign List property on Select LINQ statement在 Select LINQ 语句上分配 List 属性
【发布时间】:2014-08-13 18:36:02
【问题描述】:

所以我想实现这样的目标:

 var query = from p in db.Project
                        select new A
                        {
                            Project = p,
                            Capacity = new List<Capacity>((from pp in db.ProjectActualCapacity                                                              
                                                           where pp.ProjectID == p.ID
                                                           select new Capacity
                                                           {
                                                               Actual = pp.Hours,                                                                 
                                                               Date = pp.Date,
                                                               ProjectID = pp.ProjectID
                                                           }
                                                            ).ToList())
                        };

但是,当查询转换为列表时。它抛出以下错误

LINQ to Entities 仅支持无参数构造函数和初始化程序。

有解决办法吗?

谢谢

//更新

public class Capacity
{
    public DateTime Date { get; set; }
    public decimal? Actual { get; set; }
    public decimal? Projected { get; set; }
    public int ProjectID { get; set; }
    public decimal Rate { get; set; }
}

【问题讨论】:

  • 你如何声明Capacity类?
  • 你不能使用 List 构造函数和 IEnumerable 作为参数。
  • @AdrianoRepetti Ummm, yes you can.
  • List(IEnumerable) 是一个构造函数
  • @Adam 我认为他的意思是您不能将构造函数重载与 Linq 一起使用到实体。

标签: c# asp.net-mvc linq


【解决方案1】:

您正在显式创建一个列表并使用接受可枚举的构造函数。这不是必需的,因为您已经在使用 .ToList() 来定义该集合。

另外,Capacity 类需要一个无参数的构造函数。

所以我认为它会像这样工作。

var query = from p in db.Project
    select new A {
        Project = p,
        Capacity = (from pp in db.ProjectActualCapacity                                                              
                    where pp.ProjectID == p.ID
                    select new Capacity {
                        Actual = pp.Hours,                                                                 
                        Date = pp.Date,
                        ProjectID = pp.ProjectID
                    }
                   ).ToList())
   };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2011-08-23
    相关资源
    最近更新 更多