0

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

我写了一个 linq 查询以从数据库中获取记录以查看模型。

当我向视图模型公开不同的类时,我必须获取“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。

谢谢

4

1 回答 1

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();
于 2012-08-10T14:19:22.600 回答