当我尝试从表中获取列表时,我想使其成为像父代孩子一样的模型列表。我尝试过的模型和示例代码无法给出期望的结果。
public class EPItemZonePriceGetDto
{
public string ItemCode { get; set; }
public List<EPZonePriceDto> ItemZonePrices { get; set; }
}
public class EPZonePriceDto
{
public int ZoneId { get; set; }
public string Price { get; set; }
}
从表数据列表中选择的内容包含以下给出的示例数据:
ZoneId ItemCode Price
1 000100 10
1 000633 10.5
2 000100 11
2 000633 8.8
3 000100 9
3 000633 9.5
4 000100 8.5
4 000633 9.5
IEnumerable<EPItemZonePriceGetDto> data = _entities.ItemZonePrices.Where(x
=>x.ItemCode == itemcode).ToList().Select(s=> new EPItemZonePriceGetDto
{
ItemCode = s.ItemCode,
ItemZonePrices = new List<EPZonePriceDto>()
{
new EPZonePriceDto()
{
Price = s.Price.ToString(),
ZoneId = s.ZoneId
}
}
}
我希望如下所示的结果
{ itemZonePrices :
{
itemCode:017273
zonePrice:
[
{ zoneId:1, price:”1.23” },
{ zoneId:2, price:”1.23” }
]
}}
但这给了我
{itemZonePrices :
{
itemCode:017273
zonePrice:
[
{ zoneId:1, price:”1.23” }
]
},
itemZonePrices :
{
itemCode:017273
zonePrice:
[
{ zoneId:2, price:”1.23” }
]
}
}
答案 0 :(得分:0)
您需要将数据分组在ItemCode
上,然后根据需要投影数据。
尝试如下操作:
var data = _entities.ItemZonePrices
.Where(x => x.ItemCode == itemcode).ToList()
.GroupBy(x => x.ItemCode)
.Select(s=> new EPItemZonePriceGetDto
{
ItemCode = s.Key,
ItemZonePrices = s.Select( x =>
new EPZonePriceDto()
{
Price = x.Price.ToString(),
ZoneId = x.ZoneId
})
});