前提・実現したいこと
C#でユーザの入力をもとにData Tableを検索し、抽出データを表示するシステムの実装を行っています。Data TableにはXMLファイルのデータを読み込んでいます。そこで、LINQ to DatasetによるData Tableからのデータ抽出を行おうと考えてます。Data Tableには、"Calendar"という項目があり,"Calendar"列のデータが検索ワードに部分一致する行を取り出したいです。自分なりに調べるなどしてコードを書いてみました。ここでは、Datatable Dlにデータを格納しており、検索ワードにはユーザの入力ではなく、文字列"京都"を用いています。
しかし、実行するとに以下のエラーメッセージが出力されます。where句の行にエラーが出ており、System.NullReferenceExceptionとなっているので、null値を参照していることが問題であり、let句とwhere句あたりに問題があることは理解できるのですが、具体的に何がダメでどのように修正すればいいのかがわかりません。
また、現在発生しているエラーとは別の問題なのですが、比較する文字列の一部分を含むデータを抽出するといったことは可能なのでしょうか。例えば、ユーザが"京都観光"などと入力した場合、datatableから"京都"を含むデータをとってくるなどの場合です。
稚拙な質問ですが、どなたかお教えいただければ幸いです。
発生している問題・エラーメッセージ
オブジェクト参照がオブジェクト インスタンスに設定されていません。 System.NullReferenceException
該当のソースコード
C#
1DataRow[] rows =( 2 from row in Dl.AsEnumerable() 3 let Calendar = row.Field<string>("Calendar") 4 where Calendar.Contains("京都") 5 select row 6).ToArray();
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。


回答1件
あなたの回答
tips
プレビュー