以下代码显示错误
的问题public IList<specialisation_sub> GetAllActiveSpecialisation_Sub(
int specialisationid)
{
var queryList = _db.specialisation_sub
.Where(obj => obj.isdeleted == false &&
obj.specialisationid == specialisationid)
.Select(obj => new specialisation_sub()
{
Id = obj.Id,
name = obj.name
}).ToList();
return queryList.ToList<specialisation_sub>();
}
我要求只选择上面的两列
显示以下错误
无法在LINQ to Entities查询中构造实体或复杂类型“JobPortalModel.specialisation_sub”。
答案 0 :(得分:5)
您无法将结果投影到任意CLR类型。但是,您可以投射到匿名类型:
var queryList = _db.specialisation_sub
.Where(obj => obj.isdeleted == false && obj.specialisationid == specialisationid)
.Select(obj => new { Id = obj.Id, name = obj.name })
.ToList();
如有必要,您可以将结果转换为其他类型:
return queryList.Select(o => new specialisation_sub { Id = o.Id, name = o.name })
.ToList();
如果你进行了这样的转换,请随意用ToList()
替换第一个AsEnumerable()
来电,以避免分配不必要的中间列表。
我的答案和@Tilak之间的关键区别在于我的只会从数据库中检索所需的两列,而@Tilak的答案将检索所有列,尽管在最终结果中只使用了其中两列。根据每个实体的大小,这可能是大量的内存和/或IO开销。