C# 实体或复杂类型'';不能在LINQ to实体查询中构造
我希望有人能帮助我,因为当我编辑我的代码。一个例外显示 这是我的控制器C# 实体或复杂类型'';不能在LINQ to实体查询中构造,c#,asp.net,asp.net-mvc,linq,entity-framework,C#,Asp.net,Asp.net Mvc,Linq,Entity Framework,我希望有人能帮助我,因为当我编辑我的代码。一个例外显示 这是我的控制器 public IEnumerable<APPLICANT> GetApplicant() { IEnumerable<APPLICANT> applicantdata = Cache.Get("applicants") as IEnumerable<APPLICANT>; if (applicantdata == null) { var data
public IEnumerable<APPLICANT> GetApplicant()
{
IEnumerable<APPLICANT> applicantdata = Cache.Get("applicants") as IEnumerable<APPLICANT>;
if (applicantdata == null)
{
var data = from app in context.APPLICANTs
join a in context.Profiles
on app.Profile_id equals a.PROFILE_ID into output
from j in output.DefaultIfEmpty()
select new {
Id = app.APPLICANT_ID,
LastName =
(j == null ? app.APPLICANT_LastName : j.Applicant_LASTNAME)
};
var applicant = data
.Where(v => !String.IsNullOrEmpty(v.LastName))
.Take(1000);
applicantdata = (from a in applicant
select new APPLICANT() {
APPLICANT_ID = a.Id,
APPLICANT_LastName = a.LastName
}).AsEnumerable();
if (applicantdata.Any())
{
Cache.Set("applicants", applicantdata, 30);
}
}
return applicantdata;
}
在Linq to实体中,只能投影到任何现有的映射实体类型,但可以投影到匿名类型
applicantdata = (from a in applicant
select new APPLICANT() {
APPLICANT_ID = a.Id,
APPLICANT_LastName = a.LastName
}).AsEnumerable();
在上面的代码中,您试图投影到“申请人”类型,因此它将不允许您这样做。您可以尝试使用以下匿名类型执行此操作:
applicantdata = (from a in applicant
select new {
APPLICANT_ID = a.Id,
APPLICANT_LastName = a.LastName
}).AsEnumerable();
希望这会有帮助 在第
if(applicationData.Any())
行中,您是否正在尝试检查操作是否返回记录?您无法投影到映射的实体中@GianAcuna是的,先生,这是if(applicationData.Any())@bm使用的函数,但是我如何实现它?不清楚您想做什么。您似乎试图获取类型为applicator
的EF实体,但出于某种原因,您加入并投影到匿名类型。然后尝试从匿名类型中的数据构造一个新的申请者。我建议您寻找有关如何编写LINQ到实体查询的示例。
applicantdata = (from a in applicant
select new {
APPLICANT_ID = a.Id,
APPLICANT_LastName = a.LastName
}).AsEnumerable();