2011-03-28 3 views
1

SQL 서버에 datetime null 필드가있는 테이블이 있습니다. 해당 필드의 연도를 기준으로 결과를 그룹화하려고합니다. 그러나, 내가 linq 쿼리를 작성했을 때, 나는 그 필드를 입력 할 때 Intellisense를 얻지 못했습니다. HasValue 및 Value 만 표시합니다. 그것은 Nullable 타입으로 변환 되었기 때문에 생각합니다. 이 경우 어떻게 그룹화합니까? 필드가 NULL입니다 -그룹 by linq

+0

Google에 검색어를 표시 할 수 있습니까? 맞춰서'DateTimeField.Value.Year'라고 말하고 싶습니다. –

+0

@Matt Ellen 위대한. 귀하의 추측은 절대적으로 옳습니다. 고마워, 내 친구. 나는 내가 한 발짝 떨어진 곳이라고 생각한다. –

+0

매트의 코멘트를 대답으로 표시하는 방법을 모르겠다 –

답변

2

당신은 Nullable<DateTime> 또한 너무

group obj by obj.DateTimeField.Value.Year into g 
0

의 가치 년에 그룹 값은 같이 (이 없을 때 InvalidOperationException을 던질 수 귀하의 nullable 유형의 .Value 속성에 액세스 명심해야 데이터베이스에 있음).

하는 경우는 필터링 할 수 있습니다 null 값 :

var filteredGroups = rows.Where(row => row.DateTimeField.HasValue) 
         .GroupBy(row => row.DateTimeField.Value.Year); 

... 또는 aswell null 값을 반환; 일부 더미 키에 말 : 위의 예에서, -1 키 아래에 그룹화됩니다

var nullValuesPresent = rows.GroupBy(row => row.DateTimeField.HasValue 
    ? row.DateTimeField.Value.Year : -1); 

(또는 무엇이든 값이 존재하지 않는 년의 시나리오를 표현하기 위해 선택).