Skip to main content
 首页 » 编程设计

c#之使用 linq 获取逗号分隔的实体集合列表

2024年01月21日25birdshome

我有 2 个实体 Line 和 Tag。关系是 Line *----* Tag

从 line 我有一个导航属性 Line.Tags,它返回 Tag 对象的列表。 Tag.Name 是我之后的字符串值。

我真正需要的是以逗号分隔的方式获取所有标签名称,如下所示:

tag1, tag2, tag3 

我试图在投影中这样做,但它说它不支持 toString()

var o = dgvLines.CurrentRow.DataBoundItem as Order; 
                var r = _rs.Lines.Where(y => y.InvoiceNo == o.InvoiceNo).Select(x => new 
                { 
                    ReturnNo = x.Return.ReturnNo, 
                    Part = x.Part, 
                    Tags = String.Join(", ", x.Tags.ToList().Select(t => t.Name)) 
                }); 
                dgvExistingParts.DataSource = r; 

错误:

LINQ to Entities 无法识别“System.String Join(System.String, System.Collections.Generic.IEnumerable`1[System.String])”方法,并且此方法无法转换为存储表达式。

知道如何获得这个逗号分隔的标签列表吗?

提前致谢。

请您参考如下方法:

var r = _rs.Lines.Where(y => y.InvoiceNo == o.InvoiceNo).ToList().Select(x => new 
{ 
    ReturnNo = x.Return.ReturnNo, 
    Part = x.Part, 
    Tags = String.Join(", ", x.Tags.Select(t => t.Name)) 
});