2016-12-27 2 views
4

プロジェクトでいくつかの簡単な型変換を行っています。簡単な方法C#での型変換のNULLチェック

彼らは次のようになり:私は変換てる

var NewType = new 
{ 
    NewTypeId = old.SubType == null ? 0 : old.SubType.SubTypeId ?? 0, 
    OtherType = old.OtherType ?? "", 
    Review = old.CustomerComments ?? "", 
    Country = old.Country == null ? "" : old.Country.Abbreviation ?? "", 
    Customer = old.SubType == null ? "" : 
        old.SubType.Customer == null ? "" : 
         old.SubType.Customer.Name ?? "" 
}; 

オブジェクトは、通常、Entity Frameworkのオブジェクトです。私はフォームを変換するクラスを変更する機能も持っていません。

ヌルをチェックする簡単な方法はありますか?具体的には、このような状況でサブオブジェクトのいずれかがヌルになる可能性がありますか?

OldType.SubType.AnotherSubType.SomeProperty 
+2

どのバージョンの.NET(つまりC#)を使用していますか? –

+0

C#5(.Net 4.5) – AnotherDeveloper

+1

新しい型を 'IQueryable'から直接作成できますか? (つまりプロジェクション)ヌルチェックは必要ありません。 –

答えて

3

C#6はあなたが使用することができますのでnull-propagation/null-conditional operator

var NewType = new 
{ 
    NewTypeId = old.SubType?.SubTypeId ?? 0, 
    OtherType = old.OtherType ?? "", 
    Review = old.CustomerComments ?? "", 
    Country = old.Country?.Abbreviation ?? "", 
    Customer = old.SubType?.Customer?.Name ?? "" 
}; 

お持ちの場合は

public class Example 
{ 
    public int Value {get; set;} 
} 

ようなクラスとインスタンス

Example sample = GetExample(); 

その後、この式:

sample?.Value 

Nullable<int>を返します。 samplenullでない場合はValueの値を持ち、samplenullの場合は値がありません(null)。

+2

しかし表現ではありません。 –

+0

@IvanStoev right、忘れてしまった、多分OPが明示的に表現の中で動作する必要があると言わなかったからです。 –

+0

私は式を使っていますが、Automapperのようなものがこれを助けることができたら、それもうまくいくでしょう。私はプロジェクトの後半に慣れていないアプリケーションで作業しており、可能な限り小さなフットプリントで小さな変更を加える簡単な方法を探していました。 – AnotherDeveloper

関連する問題