2013-07-09 59 views
0

我有我的MVC應用程序內的下列視圖模型類: -爲什麼將「System.Collections.Generic.IEnumerable」到System.Collections.Generic.IEnumerable被認爲是一個錯誤

public class CustomerDetails 
    { public AccountDefinition AccountDefinition {get; set;} 
     public SDOrganization SDOrganization {get; set;} 
     public IEnumerable<SiteDefinition> SiteDefinition { get; set; } 
     public IEnumerable<AaaPostalAddress> AaaPostalAddress { get; set; } 
     public IEnumerable<AaaContactInfo> AaaContactInfo { get; set; } 
     public IEnumerable<SDUser> SDUser { get; set; } } 

英熱單位,如果我嘗試寫這個查詢: -

var customerDetails = entities.AccountDefinitions 
     .Where(a => a.ORG_ID == id) 
     .Select(cd => new CustomerDetails 
     { 
      AccountDefinition = cd, 
      SDOrganization = cd.SDOrganization, 
      AaaPostalAddress = cd.SDOrganization.AaaPostalAddresses, 
      AaaContactInfo = cd.SDOrganization.AaaContactInfoes, 
      SiteDefinition = cd.SiteDefinitions, 
     SDUser = cd.SiteDefinitions.Select(p => p.UserSiteMappings.Select(p2 => p2.SDUser))//this is raising the error 
     }) 
     .SingleOrDefault(); 
     return customerDetails; 
     } 

我會收到以下錯誤: -

Cannot implicitly convert type System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<TMS.Models.SDUser>> to System.Collections.Generic.IEnumerable<TMS.Models.SDUser> . An explicit conversion exists (are you missing a cast?)

那麼,什麼是錯的用我的代碼?

+0

讀取您正試圖轉換的IE >到IE 的錯誤,這就是爲什麼它會失敗。 – tschmit007

回答

2

由於泛型以Java實現的方式,因此您可以使用泛型類型(如List<E>),而不提供泛型參數(例如List)。 C#不能這樣工作,所以你在這個問題的標題(System.Collections.Generic.IEnumerable)中給出的類型實際上並不存在。這裏的實際問題是:

Why is converting System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<TMS.Models.SDUser>> to System.Collections.Generic.IEnumerable<TMS.Models.SDUser> considered an error.

答案是相似的,你不能int[,]類型的對象賦給int[]類型的變量的原因。也許你打算在報告錯誤的行上使用SelectMany而不是Select。這「扁平化」單個結果,以產生包含來自每個單獨子結果的所有元素的單個枚舉。

SDUser = cd.SiteDefinitions.SelectMany(
    p => p.UserSiteMappings.Select(p2 => p2.SDUser)) 
+0

這對我來說很困惑,但它運作良好。非常感謝你的大力支持。 –

相關問題