0

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”。存在显式转换(您是否缺少演员表?)

4

1 回答 1

2

这对我来说听起来像是编译时错误而不是异常,但无论如何......

看看你的select条款:

select new
{
    APPLICANT = j, 
    Profile = a,
}

那只是一种匿名类型。您希望如何将其转换为APPLICANT? 也许你只是想要APPLICANT它的一部分?这不是很清楚,但是如果您尝试将其转换为命名类型的列表,则基本上您想要匿名类型。如果您希望申请人在范围变量中,只需使用:j

select j

(顺便说一句,最好尽量遵循 .NET 命名约定 - 类型名称和属性名称都不应该在 SHOUTY_CASE 中。)

于 2013-05-21T01:53:24.293 回答