DataTable dt = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date)
.CopyToDataTable();
ds.Tables[4]
には行がありますが、例外がスローされます
「ソースにはDataRowsが含まれていません。」
この例外を処理または取り除く方法はありますか?
_ds.Tables[4]
_はそうかもしれませんが、linq-queryの結果はそうではないかもしれません。これは例外がスローされている場所である可能性が高いです。エラーが発生している場所を確実に特定できるように、メソッドチェーンを分割して暫定パラメーターを使用します。また、CopyToDataTable()
とavoid例外を呼び出す前に、既存の行を確認するのに役立ちます。
何かのようなもの
_DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
_
別のオプションは、ImportRow
で DataTable
関数を使用することです
_DataTable dt = ds.Tables[4].Clone();
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
foreach (var row in rows)
dt.ImportRow(row);
_
単純に2行に分割する
var rowSources = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if(rowSources.Any())
{
DataTable dt = rowSources.CopyToDataTable();
... code that deals with the datatable object
}
else
{
... error message ?
}
これにより、結果にDataRowが含まれているかどうかを確認できます。DataRowが含まれている場合は、CopyToDataTableメソッドを呼び出すことができます。