0

データセットを強く型付けしました。次に、linqを使用してデータテーブルを選択します。

私の問題は、このテーブルにnull値を許可する数値列があることです。しかし、この列に値がないデータ行がある場合、Select-コマンドを実行するかどうかはわかりません。

これは私の質問です:

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = tab1.IsLineNull ? null : tab1.line,
               wait = tab1.IswaitNull() ? null : tab1.wait
            }

tab1.IsLineNull()がtrueを返す場合、line = nullを設定できません。これは、データ型'decimal'(および他のすべての数値値型)をnullにすることができないためです。しかし、代わりに何を選ぶべきですか?私も0を選ぶことはできません。

4

3 に答える 3

0

私はあなたが作成する方法を知らないと思いますNullable<T>

var query = from tab1 in localDataSet.simpleTable
        select new {
           line = tab1.IsLineNull ?   new Nullable<decimal>(): tab1.line,
           wait = tab1.IswaitNull() ? new Nullable<decimal>(): tab1.wait
        }
于 2012-12-06T14:35:26.147 に答える
0

あなたはあなたの?にヌルをキャストする必要があります :tab1.lineおよびtab1.waitのタイプに。

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = tab1.IsLineNull ? (decimal?)null : tab1.line,
               wait = tab1.IswaitNull() ? (decimal?)null : tab1.wait
            }
于 2012-12-06T14:35:35.003 に答える
0

置く

(int?) 

また

(decimal?)

前に、null許容の整数/小数nullにキャストしますnull

また、あなたの方法の場合:

IsLineNull
IswaitNull

フィールドがnullかどうかを制御するだけで、次の問題を減らすことができます。

var query = from tab1 in localDataSet.simpleTable
            select new {
               line = (int?)tab1.line,
               wait = (int?)tab1.wait
            }
于 2012-12-06T14:36:24.740 に答える