0

linq-to-sqlクエリを作成していて、テーブルからID(bigintデータベース内のalongとコード内のa)をロードしています。次のようになります。

var SomeQuery = (from x in ...
                 select x.ID).SingleOrDefault();

結果が得られたらSingleOrDefault、リターンが空の場合に使用します。これは、結果が空の場合、SomeQuery変数が0またはnullになることを意味しますか?

ありがとう。

4

2 に答える 2

5

SingleOrDefaultのドキュメントを見ると

シーケンスの唯一の要素を返します。シーケンスが空の場合はデフォルト値を返します。シーケンスに複数の要素がある場合、このメソッドは例外をスローします。

シーケンスが空の場合、longおよびbigintの場合は0であるデフォルト値が返されることは明らかです。 以下に説明する理由

デフォルトのキーワード状態のドキュメント

ジェネリッククラスとメソッドで発生する問題の1つは、次のことを事前に知らない場合に、パラメーター化された型Tにデフォルト値を割り当てる方法です。

Tが参照型か値型か。

Tが値型の場合、数値か構造体か。

パラメータ化された型Tの変数tが与えられた場合、ステートメントt = nullは、Tが参照型であり、t = 0が数値型に対してのみ機能し、構造体に対しては機能しない場合にのみ有効です。解決策は、デフォルトのキーワードを使用することです。これにより、参照型の場合はnullが返さ れ、数値型の場合は0が返されます。

于 2012-07-21T17:31:34.807 に答える
0

要素が見つからない場合はデフォルトが返されます(intのデフォルト値は0です)

値が見つかった場合は値が返されます。

複数が見つかった場合は例外がスローされます。

于 2012-07-21T17:36:11.623 に答える