Объединить таблицы в нескольких условиях - сравнить даты - Linq - PullRequest
0 голосов
/ 21 января 2010

Я пытаюсь объединить две таблицы на основе нескольких условий, проблема в том, что я не могу сравнить поля даты. Дата хранится в формате datetime в БД, и я хочу, чтобы все записи на определенную дату, когда я делаю это, как показано в приведенном ниже коде, я получаю это исключение .. Метод System.String ToShortDateString () не поддерживается перевод на SQL.

P.S. это часть большого запроса ..

    string dt = "10/14/2009";    


 using (ReportGeneratorDataContext db = new ReportGeneratorDataContext())
        {
            var r = from f in db.f
                    join a in db.a
                    on new { x = f.ID, y = f.date.ToShortDateString() } equals new { x = a.ID, y = dt }
                    select f.Name;
        }

Есть ли обходные пути?

1 Ответ

0 голосов
/ 21 января 2010

Я бы попробовал

  • либо определите представление в БД с его собственным сопоставлением Linq to SQL
  • определяет вычисляемый столбец (либо в таблице, либо в представлении) таблицы a, который содержит строку, преобразованную в дату (на стороне БД ...)
  • сделать объединение вне базы данных (т.е. получить полное перекрестное объединение и выполнить where для этого перечисления)

Мне известно, что ни один из этих вариантов не является действительно удовлетворительным, но я полагаю, что это недостаток Linq-To-Sql ...

...