我有一个现有的linq查询,它将一些数据获取到视图模型对象中。这很好用。
我想为来自子表的数据添加一个新属性,该属性将具有逗号分隔字符串格式的子表中的列值。问题:我无法使用字符串连接结果。加入
简化版表格仅显示相关字段
部分
id | 零件号 |
---|---|
1 | ABC1 |
2 | DEF1 |
Entity Framework不支持String.Join()
方法。
因此,我们可以做的是将VendorPartNames
作为字符串集合获取,然后我们可以稍后用,
将其分离。
注意:为此,我们将首先使用匿名对象,然后将其转换为PartModel
。
因此,您的查询将如下所示:
var parts = DBContext.Parts
.Where(w => w.EquipmentId == eId)
.Select(p => new {
Id = p.Id,
Number = p.PartNumber,
VendorPartNames = p.VendorPartName.Select(n => n.PartName)
}).ToList();
var result = parts.Select(i => new PartModel {
Id = i.Id,
Number = i.Number,
VendorPartNames = String.Join(",", i.VendorPartNames)
}).ToList();