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

spr*_*t12 1 c# linq entity-framework

我有2个实体LineTag.关系是Line *----* Tag

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

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

tag1, tag2, tag3
Run Code Online (Sandbox Code Playgroud)

我试图在投影中做到这一点,但它说它不支持 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;
Run Code Online (Sandbox Code Playgroud)

错误:

LINQ to Entities无法识别方法'System.String Join(System.String,System.Collections.Generic.IEnumerable`1 [System.String])'方法,并且此方法无法转换为商店表达式.

知道我怎么能得到这个逗号分隔的标签列表?

提前致谢.

emp*_*mpi 7

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))
});
Run Code Online (Sandbox Code Playgroud)

  • 实体框架将不支持 `String.Join`。您必须在集合中取回名称,然后在 db 调用后调用 `String.Join`。 (2认同)