前提・実現したいこと
LINQにて外部結合したい。 一旦各テーブルをLINQで取得してJoinしたい。
発生している問題・エラーメッセージ
オブジェクト参照が~
該当のソースコード
C#
1//下記データテーブルにはデータが存在する状態 2DataTable dt1; 3DataTable dt2; 4 5var tX = from t in dt1.AsEnumerable() 6 select new 7 { 8 コード = t.Field<string>("コード"), 9 名前 = t.Field<string>("名前"), 10 }; 11 12var tY = from t in dt2.AsEnumerable() 13 select new 14 { 15 コード = t.Field<string>("コード"), 16 備考 = t.Field<string>("備考") 17 }; 18 19//外部結合したいけど下記処理実行後、nullになってしまう。 20var tjoin = 21 from d in tX 22 from y in tY.Where(x => x.コード == d.コード).DefaultIfEmpty() 23 select new 24 { 25 d.コード, 26 d.名前, 27 y.備考 28 };
試したこと
tXのメソッドを幾つか試しました。
補足情報(FW/ツールのバージョンなど)
.NetFw4.5です。
エラーメッセージを記載する場合は省略するのではなく可能な限り全文を記載してください。
質問者が記載不要と判断して省略した箇所に「答えそのもの」が書かれているケースが往々にしてあります。
後続の処理でエラーになるので、この処理は通過してしまう状態です。
デバッグしてこの処理(var tjoin = ~)でデータが取れていないことが
原因なのでこの処理について質問しました。
ノイズになる情報だと最初からわかっているのであれば書かないでください。
読む側はそれを判断できません。
発生している問題・エラーメッセージ
誤:オブジェクト参照が~
正:データが取れない。
訂正します。
Linq がどう見ても変なのですが、その前に dt1, dt2 の内容が分からないと話がはじまらないと思います。(そもそも、dt1, dt2 がちゃんとできているのか第三者には分かりませんし、もし、それらに問題があるとその先に話は時間と労力の無駄になりそうですし)
簡単なサンプルで良いので dt1, dt2 を生成するコードを書いてもらうか、Microsoft が提供しているサンプルデータベース(Northwind とか AdventureWorks とか)から DataTable を作るなどして中身が分かるようにできませんか?
回答1件
あなたの回答
tips
プレビュー