C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90112 / 5階層)  LINQでJOIN時のエラーについて
□投稿者/ WebSurfer (1751回)-(2019/02/09(Sat) 14:40:40)
No90111 (レイ さん) に返信

エラーを再現できました。原因も分かりました。

私のレス No90109 のコードは、delivery を含めた test のコード全体を Linq to Entities と
して SQL に変換することができ、foreach (var x in test) で DB に SQL を投げることができ
るので問題なかったということのようです。

delivery に ToList() を適用したあと、それを test の Linq To Entities のコードに組み込
むと、その形では SQL に変換することができないので、質問者さんと同じエラーとなります。

質問者さんのコードの deliverycontext は Linq to Object で、そのコードを実行すると即時に
匿名型のコレクションを取得するはずです。即ち、私のコードの delivery に ToList() を適用
したのと同じことです。

質問者さんのコード var test = from a in shohin ... は Linq to Entities ですよね? だか
ら、匿名型のコレクションが混ざっていると SQL に変換することができなくてエラーになったの
だと思います。

No90108 の私のレスで書いた「LINQにも色々 〜SQLに変換されるモノと変換されないモノ」は
やっぱり関係があったようです。

解決策は、質問者さんのコードで言うと deliverycontex と test のところのクエリを、

(1) 両方とも Linq to Entities にする。それができなければ、

(2) 両方とも Linq to Object にする。

・・・ということでよさそうです。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: LINQでJOIN時のエラーについて /レイ 返信無し
 
上記関連ツリー

LINQでJOIN時のエラーについて / レイ (19/02/08(Fri) 23:33) #90105
Re[1]: LINQでJOIN時のエラーについて / WebSurfer (19/02/08(Fri) 23:43) #90106
  └ Re[2]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 00:27) #90107
    ├ Re[3]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 09:06) #90108
    └ Re[3]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 11:54) #90109
      └ Re[4]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 14:40) #90111
        ├ LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 14:40) #90112 ←Now
        └ Re[5]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 15:08) #90113
          └ Re[6]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 20:52) #90114
            ├ Re[7]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 22:48) #90115
            └ Re[7]: LINQでJOIN時のエラーについて / WebSurfer (19/02/10(Sun) 10:20) #90120
              └ Re[8]: LINQでJOIN時のエラーについて / レイ (19/02/10(Sun) 19:30) #90124
                └New Re[9]: LINQでJOIN時のエラーについて / レイ (19/02/15(Fri) 22:22) #90194 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信