2010-08-20 22 views
0

比方說,我有兩個實體:Linq2EF:Concat的另一個表中的所有值轉換成字符串

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)」中扮演無濟於事,但我不知道我的語法正確。

回答

0

嗯....我沒有測試它,但你可以嘗試:

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

進入選擇,我想x必須憑證,沒有憑證......

編輯

您需要將對象移動到內存中,嘗試添加ToList()之前做出選擇

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

問題是Linq2Entities不允許String.Join,因爲這無法在SQL Server上執行。 – CodeGrue 2010-08-20 14:52:20

+0

你是對的!我已經更新了我的答案,現在就試試! – tanathos 2010-08-20 15:02:39

+0

使用Aggregate您的合成類似於.Aggregate(「」,(a,b)=> b.Abrev +「,」+ a),但您還需要首先應用ToList(),因爲LinqToEntities似乎不支持Aggregate。 – tanathos 2010-08-20 15:35:44

相關問題