我试图在Linq查询中创建某个类的对象,但由于设置了问题的标题,因此给了我一个错误。
我的问题是:
List<oneViewModel> workOrderInfoList = (from abc in db.ABC
join customer in db.Customers on abc.CustomerId equals customer.CustomerId into customers
select new oneViewModel()
{
CustomerId = abc.CustomerId,
OrderNumber = workOrderInfo.OrderNumber,
OrderDate = abc.OrderDate,
SecondClassList = new List<SecondClass>(),
}).ToList();
我已经在oneViewModel中定义了类的列表作为对象。
public class ABC
{
public DateTime? WorkOrderDate { get; set; }
public long CustomerId { get; set; }
public string CustomerName { get; set; }
public List<SecondClass> SecondClassList { get; set; }
}
3条答案
按热度按时间s4n0splo1#
在
ViewModel
构造函数中初始化secondClass
列表:记住从
Linq
查询中删除初始化。编辑
编辑2
您的
oneViewModel
应该看起来像这样:linq查询应该如下所示:
现在,您将拥有
oneViewModel
对象的列表。wkyowqbh2#
你需要先执行query,然后初始化list,例如:
pxq42qpu3#
显然,你不能像Linq to Entities那样创建一个空列表,但是你可以通过在列表中放入一个虚拟项,然后通过下面的Where子句过滤掉它来欺骗它。
可接受的解决方案对我的情况不起作用,因为我有一个更复杂的查询,其中
oneViewModel
在查询中被初始化了两次,一次是真实的数据,一次是空数据。错误:The type '{myType}' appears in two structurally incompatible initializations within a single LINQ to Entities query.
我需要在查询中指定更多的列,而不是让构造函数在幕后完成。