_dbEntities.Salaries.Where(x => x.EmployeeID == EmployeeID && x.MonthID == MonthID && x.CreatedDate == Year).SingleOrDefault();
나는 x부터 일년을 가져오고 싶다.x.CreatedDate에서 일을 가져오고 싶습니다. 어떻게해야합니까?
_dbEntities.Salaries.Where(x => x.EmployeeID == EmployeeID && x.MonthID == MonthID && x.CreatedDate == Year).SingleOrDefault();
나는 x부터 일년을 가져오고 싶다.x.CreatedDate에서 일을 가져오고 싶습니다. 어떻게해야합니까?
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()
을 제거한 생각이 그것을 대체했다.
데이터베이스 필드 값을 비교하기 전에 변환하면 성능이 저하 될 수 있습니다.이 필드의 인덱스는 비활성화되므로이 표현식은 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();