2012-05-04 82 views
0

以下查詢返回連接到「地址」表的導線列表,其中每個導聯可以有多個導聯。帶有多個連接結果的LINQ查詢,用逗號分隔結果

我期待每個潛在客戶返回一個響應,地址在模型內城市視圖中連接並用逗號分隔。如果連接結果中沒有城市,則應返回' - '。

電流輸出

Company Name | Company City 
=========================== 
Company 1 | Glasgow 
Company 1 | London 
Company 2 | London 
Company 3 | NULL 

所需的輸出

=========================== 
Company 1 | Glasgow, London 
Company 2 | London 
Company 3 | - 

QUERY

return (from t1 in db.Opportunities 
        from s1 in db.OpportunityStatus.Where(x => x.OpportunityStatus_ID == t1.StatusReason_ID) 
        from t2 in db.Leads.Where(x => x.Lead_ID == t1.Lead_ID) 
        from t3 in db.LeadAddresses.Where(x => x.Lead_ID == t2.Lead_ID).DefaultIfEmpty() 
        from t4 in db.Addresses.Where(x => x.Address_ID == t3.Address_ID).DefaultIfEmpty() 
        orderby (t1.Created) descending 
        select new FieldSalesPipelineViewModel 
        { 
         Id = t1.Opportunity_ID, 
         CompanyName = t2.Company_Name, 
         OpportunityTitle = t1.Opportunity_Title, 
         CompanyCity = "", 
         OpportunityStatusName = s1.OpportunityStatus_Name 
        }).Take(howMany); 

回答

1

嘗試使用字符串連接:

CompanyCity = string.Join(",", (from p in db.Opportunities where t2.companyname == p.companyname select p.Companycity) 

對於示例:

return (from t1 in db.Opportunities 
        from s1 in db.OpportunityStatus.Where(x => x.OpportunityStatus_ID == t1.StatusReason_ID) 
        from t2 in db.Leads.Where(x => x.Lead_ID == t1.Lead_ID) 
        from t3 in db.LeadAddresses.Where(x => x.Lead_ID == t2.Lead_ID).DefaultIfEmpty() 

        orderby (t1.Created) descending 
        select new FieldSalesPipelineViewModel 
        { 
         Id = t1.Opportunity_ID, 
         CompanyName = t2.Company_Name, 
         OpportunityTitle = t1.Opportunity_Title, 
         CompanyCity = string.Join(",", (from t4 in db.Addresses Where t4.Address_ID == t3.Address_ID select t4.CompanyCity), 
         OpportunityStatusName = s1.OpportunityStatus_Name 
        }).Take(howMany); 
+0

感謝您的例子。我不確定我是否遵守。我的地址數據存儲在「地址」表中 - 您能否詳細說明? – Nick

+0

@Nick我編輯了我的答案! – HW90

+0

這給我錯誤LINQ to Entities不能識別方法System.String加入(System.String,System.Collections.Generic.IEnumerable'1 [System.String])'方法,並且此方法不能被轉換爲商店表達。 – Nick