2009-08-08 3 views
3

Subsonic의 Find<T> 메서드를 사용하여 "null"값이 포함 된 필드가있는 행을 검색하는 방법은 무엇입니까? 토론을 위해 "SynchronizedOn"이라는 nullable DateTime 필드가 포함 된 "방문"이라는 aC# 클래스가 있다고 가정하고 Subsonic 마이그레이션에서 해당 "방문수"테이블과 "SynchronizedOn"필드를 생성했다고 가정합시다 . 나는 SQL 쿼리 나 자신을 작성했다면Subsonic 3, SimpleRepository, SQL Server : null 필드가있는 행을 찾는 방법은 무엇입니까?

, 내가 좋아하는 뭔가를 작성합니다

SELECT * FROM Visits WHERE SynchronizedOn IS NULL 

나는 다음과 같은 코드를 사용하는 경우 :

var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null); 

음속은 다음과 같은 SQL 쿼리로를 설정하거나 해제 할 수 :

SELECT * FROM Visits WHERE SynchronizedOn == null 

절대 행을 반환하지 않습니다.

나는 다음 코드를 시도했지만 오류가 발생합니다 :

visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue); 

나는 다음과 같은 구문을 사용 할 수 있었다 :

var query = from v in repository.All<Visit>() 
      where v.SynchronizedOn == null 
      orderby v.CreatedOn 
      select v; 
visits = query.ToList<Visit>(); 

을하지만이 Find<T> 방법을 사용하는 것만 큼 좋은 short 타입이 아니다 .

누구나 Find<T> 메서드에서 "SynchronizedOn IS NULL"조건을 어떻게 지정할 수 있는지 알고 있습니까?

답변

1

당신은 사용할 수 있습니다

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList(); 
+0

귀하의 제안은 내 LINQ 쿼리에 대한 개선 만이 방법을 찾기를 사용하지 않습니다. Find 메서드가 null을 확인할 수 없다는 것을 이해해야합니까? – desautelsj