在Select LINQ语句上分配List属性

本文关键字:分配 List 属性 语句 Select LINQ | 更新日期: 2023-09-27 18:17:52

所以我想实现这样的东西:

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

在Select LINQ语句上分配List属性

您正在显式地创建列表并使用接受枚举的构造函数。这是不必要的,因为您已经在使用.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())
   };