2014-06-23 2 views
1

법인 푸 포함되지 않는 경우는 대신 기본의 널 (null)을 검색 : 정수엔티티 프레임 워크 (6) - 질의에 행

int? barX = FOOs.GetQuery().Where(f => f.x == x).Select(f => f.bar).SingleOrDefault(); 

반환 기본값은 0 :

public int Foo { get; set; }

EF-쿼리 행이없는 경우 을 반환하고 싶지만 null을 반환하고 싶습니다.

어떻게해야합니까?

0은 결과가 비어 있거나 열 값이 실제로 0입니다.

답변

0

대신 전체 기업과 프로젝트를 철수 할 수있는 쿼리의 투사 일을 한 후 :

var foo = FOOs.GetQuery().Where(f => f.x == x).SingleOrDefault(); 
int? barX = foo != null ? (int?)foo.bar : null; 

당신은 당신이 대신 익명 형식을 반환 할 수있는 모든 개체를 가져 오는 걱정하는 경우 전체 일 : 나는 (단지 투사에 캐스팅)이 가능 몰랐 때문에

var foo = FOOs.GetQuery().Where(f => f.x == x).Select(new { bar = f.bar }).SingleOrDefault(); 
int? barX = foo != null ? (int?)foo.bar : null; 

감사 @Flater하기 :

int? barX = FOOs.GetQuery().Where(f => f.x == x).Select(f => (int?)f.bar).SingleOrDefault(); 
+0

이것은 유효한 해결책이지만 가능한 경우 전체 엔티티를 가져 오지 않겠습니까? – djmj

+0

이 전체 엔티티를 가져 오지 못하도록 대답을 업데이트했습니다. – Dismissile

+1

OP의 원래 스 니펫에서 '.Select (f => (int?) f.bar) .SingleOrDefault()'문제가 해결되지 않았습니까? 코드에 추가 평가를 추가하는 것보다 간결한 접근법으로 보입니다. – Flater

관련 문제