2015-02-07 3 views

답변

1

DateTime 개체의 Year 속성을 확인할 수 있습니다. 그리고 그것은 작동해야이 열이 Null을 허용

_dbEntities.Salaries.Where(x => x.EmployeeID == EmployeeID && 
            x.MonthID == MonthID && 
            x.CreatedDate.Year == Year) 
         .SingleOrDefault(); 

경우에, 당신은 그것을 변경해야합니다 : 난 그냥 MS SQL Server 데이터베이스에 대해 LinqToEntity에 체크 한 x.CreatedDate.Value.Year == Year

하고 그것을 잘 작동합니다.

는 P.S : 나는 그들이 EntityFunctions.Year()을 제거한 생각이 그것을 대체했다.

0

데이터베이스 필드 값을 비교하기 전에 변환하면 성능이 저하 될 수 있습니다.이 필드의 인덱스는 비활성화되므로이 표현식은 sargeable이 아닙니다. 여보의 솔루션이 받아들이는 가치가 아마 OK입니다 (당신은 또한 다른 매우 선택적 필드를 필터링 때문에), 그리고 그래서 있지만, 할 것이 더있을 수 있습니다

var lowerBound = new DateTime(year, 1, 1); 
var upperBound = new DateTime(year + 1, 1, 1); 

_dbEntities.Salaries 
      .Where(x => x.EmployeeID == EmployeeID 
        && x.MonthID == MonthID 
        && x.CreatedDate >= lowerBound) 
        && x.CreatedDate < upperBound) 
      .SingleOrDefault(); 
관련 문제