我已经在我的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的集合(在我的视图模型中定义)??? ?
答案 0 :(得分:4)
改为使用SelectMany
:
UserSiteMapping = cd.SiteDefinitions.SelectMany(p2 => p2.UserSiteMappings)
您可能还需要ToList()
或ToArray()
来电从IEnumerable<T>
切换到ICollection<T>
:
UserSiteMapping = cd.SiteDefinitions.SelectMany(p2 => p2.UserSiteMappings).ToList()