私の Linq-to-SQL プログラムは、SQL Server データベースからかなりの数の値を返します。その中には、値が null になるものとそうでないものがあります。
DataTable
列が文字列としてキャストされている場合、これは問題ではありません。ただし、10 進数としてキャストすると、10 進数を null にすることはできないというエラー メッセージが表示されます。
私が見つけなければならないのは、コードをきれいに保ちながら、これらを効果的に処理する方法です。
// Create DataTable
DataTable dt = new DataTable();
dt.Columns.add("Deal", typeof(string));
dt.Columns.add("Price", typeof(decimal) ?? typeof(DBNull));
// Create Linq Query
var query =
from quer in table
select new
{
quer.deal_id,
quer.price
};
ここでは、テーブルに挿入する前にデータ行を作成します。
var datarows = query.Select(r =>
{
var row = dt.NewRow();
row["Deal"] = r.deal_id;
row["Price"] = r.price;
};
ここで、データ行が Null を確実に処理できるようにするために、null 可能にすることができますが、必須ではありません。
dt.Columns.add("Deal", typeof(string?));
しかし、10 進数フィールドについては、次のようにする必要があります。
if (r.price == DBNull.Value)
{
row["Price"] = null;
}
if
現在、設計しているテーブルごとに、これらのステートメント チェックを約 50 回行う必要があります。関数に渡して実行できますか?