Я хотел бы проверить, соответствует ли текущая дата ввода той же неделе, что и мои временные метки в базе данных. Я делаю это, просматривая номер недели.Проверить первый день недели в заявлении 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 для Entities, это будет причиной того, что он терпит неудачу. Существует не поддерживается способ перевода этого метода в sql. Попробуйте использовать метод за пределами sql, а затем присоединитесь к нему. – paqogomez
Как бы вы пишете его в SQL, без LINQ? Сначала посмотрите на это, а затем выясните, как сопоставить это с LINQ. – Servy