DefaultIfEmpty()
语句加入我的数据时,我的控制器有异常。 。
这是我的控制者:
public IEnumerable<APPLICANT> GetApplicant()
{
IEnumerable<APPLICANT> applicantdata = Cache.Get("applicants") as IEnumerable<APPLICANT>;
IEnumerable<Profile> profiledata = Cache.Get("profiles") as IEnumerable<Profile>;
if (applicantdata == null)
{
var applicantList = (from a in context.Profiles
join app in context.APPLICANTs
on a.PROFILE_ID equals app.Profile_id into joined
from j in joined.DefaultIfEmpty(new APPLICANT())
select new
{
APPLICANT = j,
Profile = a,
}).Take(1000).AsEnumerable();
applicantdata = applicantList.ToList();
if (applicantdata.Any())
{
Cache.Set("applicants", applicantdata, 30);
}
}
return applicantdata;
}
这是我得到例外的一行:
applicantdata = applicantList.ToList();
这就是例外
无法将类型'System.Collections.Generic.List'隐式转换为'System.Collections.Generic.IEnumerable'。存在显式转换(您是否错过了演员?)
答案 0 :(得分:2)
这听起来像是编译时错误而不是异常,但无论如何......
查看您的select
条款:
select new
{
APPLICANT = j,
Profile = a,
}
这只是一种匿名类型。您如何期望能够将其转换为APPLICANT
?也许你只想要它的APPLICANT
部分?它并不是很清楚,但如果您尝试将其转换为名为类型的列表,那么基本上您不需要匿名类型。如果你做只想让申请人加入j
范围变量,只需使用:
select j
(顺便说一句,尝试尽可能遵循.NET命名约定是好的 - 类型名称和属性名称都不应该在SHOUTY_CASE中。)