无法隐式转换类型'System.Collections.Generic.IEnumerable

时间:2013-07-09 09:44:20

标签: entity-framework-4.1

我已经在我的asp.net mvc wen应用程序中定义了以下模型类: -

public class CustomerDetails
{
    public AccountDefinition AccountDefinition {get; set;}
    public SDOrganization SDOrganization {get; set;}
    public ICollection<SiteDefinition> SiteDefinition { get; set; }
    public ICollection<AaaPostalAddress> AaaPostalAddress { get; set; }
    public ICollection<AaaContactInfo> AaaContactInfo { get; set; }
    public virtual ICollection<UserSiteMapping> UserSiteMapping { 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,
        UserSiteMapping = cd.SiteDefinitions.Select(p2 => p2.UserSiteMappings) //this is raising the exception
    })
    .SingleOrDefault();

return customerDetails;

但是我得到了以下误导性错误: -

  

无法隐式转换类型'System.Collections.Generic.IEnumerable&gt;'到'System.Collections.Generic.ICollection'。存在显式转换(您是否错过了演员?)

我不确切知道导致错误的原因,因为我选择了与SiteDefinition相关的UserSiteMapping,并且我将这些分配给UserSiteMapping的集合(在我的视图模型中定义)??? ?

1 个答案:

答案 0 :(得分:4)

改为使用SelectMany

UserSiteMapping = cd.SiteDefinitions.SelectMany(p2 => p2.UserSiteMappings)

您可能还需要ToList()ToArray()来电从IEnumerable<T>切换到ICollection<T>

UserSiteMapping = cd.SiteDefinitions.SelectMany(p2 => p2.UserSiteMappings).ToList()