【发布时间】:2017-04-15 22:55:59
【问题描述】:
在实体框架中,我想获取一个包含列表的对象,但列表只获取第一条记录。
我有 2 个对象 Sale 和 Profile,它们与数据库对象不同,我在查询中创建这些对象,例如“select new Sale { }”。 Profile 对象包含销售类型列表。执行查询时,列表只获取数据库中的第一条记录。
销售复杂对象
public class Sale
{
public int Id { get; set; }
public string Header { get; set; }
public double Price { get; set; }
}
配置文件复杂对象
public class Profile
{
public int Id { get; set; }
public string Name { get; set; }
public List<Sale> SalesList { get; set; }
}
我使用左连接是因为如果下一个对象为空,它应该将此对象插入到列表中。
在此查询
Profile profile = (from u in db.USER
join s in db.SALE on u.ID equals s.USER_ID into saleleft
from salej in saleleft.DefaultIfEmpty()
where u.ID == _userId
select new Profile
{
Id = u.ID,
Name = u.NAME,
SalesList= new List<Sale>()
{
salej != null ? new Sale
{
Id=postj.ID,
Header=salej.HEADER,
Price=salej.PRICE
} : null
}.ToList()
}).FirstOrDefault();
我猜这可能与 FirstOrDefault() 方法有关。因此,我认为它应该将所有记录都发送到 SalesList。如何让所有记录列出?有什么想法吗?
提前致谢。
【问题讨论】:
-
因为你创建了一个只有一个元素的列表
-
我研究了如何填写复杂类型的子列表。因此我使用了这种方式。如何更改我的查询?
标签: entity-framework linq