Я пытаюсь получить данные из базы данных, где table.Date.WeekDayThing = DateTime.Now.WeekDayThing
(см ниже методы), но я получаю ошибкуполучить только данные из БД соответствия текущей недели
LINQ для лиц, не признающих метод 'Int32 GetIso8601WeekOfYear (System.DateTime)', и этот метод не может быть преобразован в выражение хранилища .
запросов LINQ
var dbHours = DAO.Instance.HourRegistration
.Where(x => x.Login_ID == logId && x.Cust_ID == custId && GetIso8601WeekOfYear(x.Date) == GetIso8601WeekOfYear(DateTime.Now))
.Include(x => x.Customer)
.ToList();
Метод GetIso8601WeekOfYear (DateTime время)
public int GetIso8601WeekOfYear(DateTime time)
{
// Seriously cheat. If its Monday, Tuesday or Wednesday, then it'll
// be the same week# as whatever Thursday, Friday or Saturday are,
// and we always get those right
DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
{
time = time.AddDays(3);
}
// Return the week of our adjusted day
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}
Кто-нибудь знает, как решить эту проблему?
@Detilium, он никогда не будет работать, как вы пишете, GetIso8601WeekOfYear не может работать с SQL Server.Вы можете запустить запрос, предложенный Horia, но позаботиться о масштабируемости, потому что предлагаемый запрос извлекает все данные всех недель в памяти (также разрешает отношения с клиентами), а затем фильтрует фактическую неделю, поэтому обычно он выбирает 52/2 = 26 раз необходимые записи (в конце года 52 раза). – bubi
Вот почему я сказал, чтобы отфильтровать данные, чтобы вернуть только последние 7 дней с условием типа && x.Date> = DateTime.Today.AddDays (-7) 'в первом' Where'. – Horia
Придавая '&& x.Date> = DateTime.Now.AddDays (-7)' дает ту же ошибку, что и мой первоначальный вопрос – Detilium