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

내가 변환있어 개체는 일반적으로 엔티티 프레임 워크 개체입니다. 또한 형식을 변환 할 클래스를 수정할 수있는 능력이 없습니다.

Null을 확인할 수있는 더 쉬운 방법은 무엇입니까? 특히 하위 개체가 null 일 수있는 상황과 같은 경우?

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이 아니거나 값이없는 경우 (null) samplenull 인 경우이 값은 Value입니다.

+2

표현식에 없습니다. –

+0

@IvanStoev 맞아, OP가 명시 적으로 표현식에서 작동 할 필요가 있다고 언급하지 않았기 때문일 수도 있습니다. –

+0

표현식을 사용하고 있지만 Automapper와 같은 기능이 도움이 될 수 있다면 표현식이 제대로 작동합니다. 나는 프로젝트에서 익숙하지 않은 어플리케이션에서 일하고 있으며 가능한 한 작은 풋 프린트로 약간의 부수적 인 변경을하는 쉬운 방법을 찾고있었습니다. – AnotherDeveloper