实体框架,Linq:连接子表的结果



我有一个现有的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();

最新更新