2012-05-25 2 views
10

C# 4.0과 함께 PetaPoco Micro-ORM을 사용하고 있습니다.null 값에 대해 var을 확인하는 방법은 무엇입니까?

아래 코드는 데이터베이스에서 단일 행을 검색합니다

var result = db.SingleOrDefault<TdUsers>(getUserQuery); 
나는 결과가 모든 행이 포함되어 있는지 여부를 확인하고 싶습니다 여부가 null

. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? LINQ는 게으른 로딩 때문에

+0

사용할 수 있습니까? – sehe

답변

15
if (result != null || result.Count() == 0) { 
    // Checks whether the entire result is null OR 
    // contains no resulting records. 
} 

나는 문제가 null에 대한 확인하지 않을 생각합니다. 귀하의 오류는 표현식 db.SingleOrDefault<TdUsers>(getUserQuery);을 사용 중입니다.

.Single<T>(expression) null을 반환하지 않습니다. 결과에 값이 반환되지 않으면 오류가 발생합니다. 그러나 .SingleOrDefault<T>(expression)은 표현식에 값이 없으면 null 값을 반환하므로 여기서 사용하는 것처럼 if (result == null) 유형 검사와 가장 잘 결합됩니다.

+0

시도한 결과! = null이지만 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다"가 표시됩니다. – RKh

+3

@RPK - 질문에 코드를 게시 할 수 있습니까? 이것은 효과가있다. – ChrisF

+0

내 ans를 편집했습니다. –

1
var v = result.ToList(); 

지금

if (v.Count > 0) 
+0

위의 답변에 대한 내 의견보기. –

3

을 확인 당신이 할 수있는 :

result.ToList() // Convert result to a list 

if (result.Any()) { 
    // result is not null 
} 
+0

NO result == null null 항상 false가되는 것은 아닐 것입니다. 참조 타입의 기본값은 무엇이라고 생각합니까? –

+0

@ParvSharma - 정확하고 조정 됨. –

+0

:) .................... –

3
var result = db.SingleOrDefault<TdUsers>(getUserQuery); 

을 위의 코드 SingleOrDefault에서 널 (null) 골짜기 또는 지정된 제네릭 형식을 반환합니다 (그것은에 알려진 실행 시간).

중위는 반환 된 값이 null인지 여부를 확인 여부를 당신은 단순히 당신이 가지고 무엇

if(result!=null) 
{ 
//do your code stuff 
} 
else 
{ 
//stuff do be done in case where result==null 
} 
관련 문제