2011年11月29日
ToNullable拡張メソッド
var を使いたいための、拡張メソッド。
これを使えば、
int? n = 10;
ではなくて、
var n = 10.ToNullable();
と書けます。
まあ、あくまでもお遊びです。
これを使えば、
int? n = 10;
ではなくて、
var n = 10.ToNullable();
と書けます。
まあ、あくまでもお遊びです。
2011年11月26日
NullableのオブジェクトのGetType()で得られる値は
以下のコードの変数 t って、Nullable<Decimal> の型情報が入るのかと思ったら、
Decimalの型情報が入るんだ。
そういえば前にも同じようなことで悩んだ気がするけど...
まあ、実際はこんなコードが必要になる場面は無いだろうけどね。
2010年12月09日
LINQ to SQL番外編 - NULL許容の列を扱う
NorthwindデータベースのEmployeesテーブルの ReportsTo列は、NULLを許可する
型として定義されています。
そのため、「LINQ to SQLエンティティクラス」の Employee.ReprotsToプロパティも、
と、Northwind.designer.csに書かれています。
System.Nullableは、int? と同じ意味です。
これがわかれば、クエリ式を書くのもそう難しいことではありません。
ReportsToがNULLのものだけ取得したいのなら、
と書けばOKです。
では、Customersテーブルの Fax列(NULLを許可しています)は、どうでしょうか?。
Fax列は、「LINQ to SQLエンティティクラス」のCustomer.Faxでは、C#のString 型にマッピングされています。
System.Nullable とはなっていません。
string型は参照型で、もともとnullを保持できますから、そのままでOKということです。
というか、文法上、System.Nullable とすることはできません。
ですから、
と書けば、Fax番号が登録されていない顧客だけを抜き出すことができます。
そのため、「LINQ to SQLエンティティクラス」の Employee.ReprotsToプロパティも、
と、Northwind.designer.csに書かれています。
System.Nullable
これがわかれば、クエリ式を書くのもそう難しいことではありません。
ReportsToがNULLのものだけ取得したいのなら、
と書けばOKです。
では、Customersテーブルの Fax列(NULLを許可しています)は、どうでしょうか?。
Fax列は、「LINQ to SQLエンティティクラス」のCustomer.Faxでは、C#のString 型にマッピングされています。
System.Nullable
string型は参照型で、もともとnullを保持できますから、そのままでOKということです。
というか、文法上、System.Nullable
ですから、
と書けば、Fax番号が登録されていない顧客だけを抜き出すことができます。



