如何选择要填充的属性而不是对象的所有属性

时间:2014-08-12 11:31:40

标签: c# asp.net-mvc linq lambda

我有一张大桌子,我需要选择一些不是全部的字段。

我会做这样的事情:

select column 2, column3 from tableName order by column2

但我正在尝试它并且它正在做错误。

public List<RiskCard> GetAllAcitveRiskCardsBasicProperties(Company company)
{
    return GetDbSet<RiskCard>()
       .Where(i => i.Company.CompanyId == company.CompanyId && i.Active == true)
       .OrderBy(o => o.PremisesName)
       .Select(o => new RiskCard { RiskCardId = o.RiskCardId, PremisesName = o.PremisesName}).ToList();
}

错误是;

无法在LINQ to Entities查询中构建实体或复杂类型“my.namespace.RiskCard”。

1 个答案:

答案 0 :(得分:0)

尝试按照错误消息,不要在LINQ to Entities查询中构造实体,您可以改为创建匿名类型。然后,您可以在LINQ中构造实体,以便稍后进行对象查询:

var query = GetDbSet<RiskCard>()
           .Where(i => i.Company.CompanyId == company.CompanyId && i.Active == true)
           .OrderBy(o => o.PremisesName)
           .Select(o => new { RiskCardId = o.RiskCardId, PremisesName = o.PremisesName})
           .ToList();

return query.Select(o => new RiskCard { RiskCardId = o.RiskCardId, PremisesName = o.PremisesName})
            .ToList();

相关问题:The entity cannot be constructed in a LINQ to Entities query