0

DefaultIfEmpty()Right join my data にステートメントを追加すると、コントローラーで例外が発生します。.

これは私のコントローラーです:

        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 に答える