2016-12-27 32 views
4

我在項目中進行了一些快速類型轉換,我對此不太熟悉。在類型轉換中執行C#空值檢查的簡單方法

它們看起來與此類似:

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 ?? "" 
}; 

我轉換對象通常是實體框架的對象。我也沒有能力修改我將要轉換的類。

有沒有更簡單的方法來檢查空值,特別是對於這樣的情況下,任何子對象可能爲空?

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>。這有Value的值,如果sample不是null或沒有價值(是null)如果samplenull

+2

雖然不在表達式中。 –

+0

@IvanStoev對,忘了,也許是因爲OP沒有明確提到它需要在表達式中工作。 –

+0

我正在使用表達式,但如果像Automapper這樣的東西可以幫助解決這個問題,那也可以。我正在研究一個我在項目後期不熟悉的應用程序,並正在尋找一種簡單的方法,以儘可能小的佔用空間進行一些小的輔助更改。 – AnotherDeveloper

相關問題