前提・実現したいこと
●のコードで以下のエラーメッセージが出力されます。
LINQ to ObjectsとLINQ to Entitiesの違いが影響していると思うのですが、
解決できないため原因を教えていただきたいです。
発生している問題・エラーメッセージ
LINQ 式ノード型 'ArrayIndex' は、LINQ to Entities ではサポートされません。
該当のソースコード
C#
1 //AEntityからnumber列のデータを取得 2 var List = new List<string>(); 3 AEntity.ForEach(x => { List.Add(x.number); }); 4 5 //Listのnumberを'-'と '_'で三分割する 6 string[] ymd = trialList[0].Split(new char[] { '-', '_' }) 7 8 //AEntityのデータと比較し、table_Bと合致するものを取得 9 ● var GetEntities = context.table_B 10 .Where(x => x.Year.Tostring() == ymd[0] 11 && x.Month.Tostring() == ymd[1] 12 && x.Day.Tostring() == ymd[2]).ToList(); 13 14 15//number;string型 16//Year month day;Deciaml型
補足情報(FW/ツールのバージョンなど)
C#
EntityFramework
VisualStudio 2017
LINQ to Entities ではクエリは SQL に変換されてデータベースに送られます。
この場合は ArrayIndex に対応する SQL が無いので失敗しています。
まず LINQ to Entities でフィルタリングしてその後 LINQ to Objects でフィルタリングするのが良いでしょう。
データベースから取得したデータに AsEnumerable() を適用すると LINQ to Entities から LINQ to Objects になりますから、Where の前にそれを入れてみてください。
前のスレッド https://teratail.com/questions/377011 の続きですよね? 質問欄を編集してそのことを追記してください。
回答1件
あなたの回答
tips
プレビュー