0

假设我有两个实体:

Physician
Credentials

并且医生可以拥有许多证书,例如琼斯博士可以拥有 MD、DO、MPH 作为证书。所以我需要通过 Linq 生成一个报告,将凭据连接成一个字符串。例如:

from p in Physicians
select
{
   p.Name
   p.Credentials (??? <- concatenated list of all credentials ?????)
}

我玩过 " p.Credentials.Aggregate((a,b) => a.Abrev + ',' + b.Abrev)" 无济于事,但我不确定我的语法是否正确。

4

1 回答 1

0

嗯....我没有测试过,但你可以试试:

from p in Physicians
select
{
   p.Name,
   String.Join(",", p.Credentials.Select<Credentials, string>(c=>c.Abrev).ToArray())
}

进入Select,我认为x必须是Credential,而不是Credentials ...

编辑

您需要将对象移动到内存中,尝试在选择之前添加 ToList()

from p in Physicians.Include("Credentials").ToList()
select new
{
    p.Name,
    Credentials = String.Join(",", p.Credentials.Select<Credentials, string>(c=>c.Abrev).ToArray())
}
于 2010-08-20T13:52:22.830 回答