0

私の 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 回行う必要があります。関数に渡して実行できますか?

4

1 に答える 1