DateTime 속성의 날짜 부분에만 기반한 엔티티를 선택하려는 경우 아래에 '패턴'을 사용하는 것이 종종 불안합니다. EF는 T-SQL에 DateTime.Date 속성을 구문 분석하지 않습니다, 그래서 나는이 코드를 사용하게 : 그것은 내가 지금까지 발견 한 가장 읽을 수있는 솔루션입니다EF4의 DateTime 속성에서만 날짜 비교.
var nextDay = raceDate.Date.AddDays(1);
return EntityContext.RacingInfoes.SingleOrDefault(ri => ri.RaceDate >= raceDate && ri.RaceDate < nextDay);
을, 그러나 나는 사방을 반복 좋아하지 않는다 . 그러나 Linq to Entities 파서는 해당 메서드를 인식하지 못하기 때문에 어떤 메서드에서도 캡슐화 할 수 없습니다. 이것에 대해 제가 할 수있는 일이 있습니까?
return EntityContext.RacingInfoes.SingleOrDefault(Helper.OnDate(x => x.RaceDate),
raceDate);
(OnDate
나쁜 이름입니다,하지만 당신은 내가 무슨 뜻인지 확인할 수 .. :
Expression<Func<T, bool>> OnDate<T>(Expression<Func<T, DateTime>> selector,
DateTime date)
{
var nextDay = date.Date.AddDays(1);
// Build up an expression tree, using Expression.AndAlso etc to
// compare the result of applying the selector with both date and nextDay
}
그런 다음 당신이 쓰는 것 :