Linq查询将集合从一个类检索到另一个类

时间:2012-08-10 14:13:31

标签: c# linq c#-4.0 entity-framework-4

我有2个类SiteConfig,SiteConfigView。一个与我的EF和一个类紧密耦合,以将其暴露给View模型。这两个类都包含“品牌”类型的集合

我编写了一个linq查询来从db获取记录以查看模型。

当我向视图模型公开不同的类时,我必须获取“SiteConfigView”类型的记录。所以我正在写一个linq查询,但我有点困惑如何从SiteConfig到SiteConfigView获取集合。

有我的课程

public partial class SiteConfig
{
    public SiteConfig()
    {
        this.SiteBrands = new HashSet<SiteBrand>();
    }

    public int IdSiteConfig { get; set; }
    public string Name { get; set; }
    public byte[] SiteLogo { get; set; }
    public string Brands { get; set; }
    public string LinkColour { get; set; }

    public virtual ICollection<SiteBrand> SiteBrands { get; set; }
}

public class SiteConfigView
{
    public SiteConfigView()
    {

    }

    public int IdSiteConfig { get; set; }
    public string Name { get; set; }
    public byte[] SiteLogo { get; set; }
    public string Brands { get; set; }
    public string LinkColour { get; set; }

    public IEnumerable<SiteBrandView> SiteBrands { get; set; }
}

这是我正在尝试的查询

var db = new SampleMVCEntities();
        IQueryable<SiteConfig> test = db.SiteConfigs.Select(a => new SiteConfigView{Name = a.Name,LinkColour = a.LinkColour,SiteLogo = a.SiteLogo});

可以来指导我如何从SiteConfig到SiteConfigView获取集合。

由于

1 个答案:

答案 0 :(得分:2)

你正朝着正确的方向努力尝试

var siteConfigs = db.SiteConfigs.AsEnumerable().Select(a => new SiteConfigView()
                 {
                     Name = a.Name,
                     LinkColour = a.LinkColour,
                     SiteLogo = a.SiteLogo,
                     SiteBrands = a.SiteBrands.AsEnumerable().Select(a => new SiteBrandView()
                     {
                          //Do the projection
                     }).ToList()
                 }).ToList();