현재 입력 날짜가 데이터베이스의 타임 스탬프와 같은 주인지 확인하고 싶습니다. 나는 날짜의 주 번호를보고 이것을한다. 정상적으로 작동LINQ 문의 첫 번째 요일 확인
Calendar.GetWeekOfYear(DateTime, ...)
에있어서,
가 나는를 사용하는 것을 시도하고있다. 내가 LINQ를 사용할 때그러나, 나는 얻을 :
An exception of type 'System.NotSupportedException' occurred in System.Data.Entity.dll but was not handled in user code
Additional information: LINQ to Entities [...]
내 코드 :
var ordersWeek = orders.Where(c =>
(EntityFunctions.TruncateTime(c.Timestamp).Value.Year == EntityFunctions.TruncateTime(DateTime.Now).Value.Year) &&
(EntityFunctions.TruncateTime(c.Timestamp).Value.StartOfWeek(DayOfWeek.Monday) == EntityFunctions.TruncateTime(DateTime.Now).Value.StartOfWeek(DayOfWeek.Monday))
).ToList();
나는이 확장 방법을 사용하려고이 특정 코드에서 :
을public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
int diff = dt.DayOfWeek - startOfWeek;
if (diff < 0)
{
diff += 7;
}
return dt.AddDays(-1 * diff);
}
무엇이 가장 좋습니까 LINQ에서이 작업을 수행하는 방법은 무엇입니까? .Date
기능을 사용할 수 없음을 기억하십시오.
LINQ는 객체에 LINQ에 비해 상당히 제한된다. LINQ 표현 전체를 게시하십시오. – Dennis
Linq to Entities를 사용하는 경우 이것이 실패하는 이유입니다. 해당 메소드를 SQL로 변환하는 지원되는 방법은 없습니다. SQL 외부의 메서드를 사용해 본 다음 조인하십시오. – paqogomez
LINQ없이 SQL로 어떻게 작성할 수 있습니까? 우선 그 그림을 그린 다음 LINQ에 매핑하는 방법을 찾아야합니다. – Servy