4

これは.Net C# String.Join 要素の値が null の場合、空の文字列ではなく "null" を出力する方法に対するフォローアップの質問です。答えは、??演算子を使用してカスタム null 値を定義することを提案しましたが、置換はトリガーされませんでした。

DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
DataTable rotationData = myDataSet.Tables["Table"];

rotationValues = string.Join(", ",
    from r in rotationData.Rows.OfType<DataRow>()
    select r[5] ?? "null");

コードを次のように変更すると:

rotationValues = string.Join(", ",
    from r in rotationData.Rows.OfType<DataRow>()
    select r[5].GetType());

有効なデータを含む要素のデータ型は でSystem.Doubleあるのに対し、NULL である要素のデータ型は ですSystem.DBNull??で動作しませんかSystem.DBNull?

4

2 に答える 2

7

いいえDBNullnull同じものではありません。しかし、代わりにこれを書くことができます:

select r[5] == DBNull.Value ? "null" : r[5]);

別の可能性は、Field拡張メソッドを使用することです。これにより、指定された行の各列値への厳密に型指定されたアクセスが可能になり、??演算子が機能します。

select r.Field<string>(5) ?? "null";
于 2013-05-18T07:55:13.927 に答える
3

??nullデータベースではなく、プログラミング言語で動作しますDBNull

MSDNから:

オブジェクト指向プログラミング言語の null の概念を DBNull オブジェクトと混同しないでください。オブジェクト指向プログラミング言語では、null はオブジェクトへの参照がないことを意味します。DBNull は、初期化されていないバリアントまたは存在しないデータベース列を表します。

于 2013-05-18T07:59:59.840 に答える