Linq2EF: объединить все значения в другой таблице в строку - PullRequest
0 голосов
/ 20 августа 2010

Допустим, у меня есть две сущности:

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)" безрезультатно, но я не уверен, что синтаксис правильный.

1 Ответ

0 голосов
/ 20 августа 2010

Хм .... Я не проверял это, но вы можете попробовать:

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

На выбор, я думаю, х должен быть учетными данными, а не учетными данными ...

EDIT

Вам нужно переместить ваши объекты в память, попробуйте добавить ToList (), прежде чем сделать Select

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