Фильтровать запрос по дате - PullRequest
1 голос
/ 04 апреля 2011

У меня есть следующий запрос

var query =  
                     from f in _db.Production
                     join g in _db.Run on f.show equals g.Production.show


                     select new ViewProductions {
                            Venuename = g.venue,
                            Showname = f.show,

                            StartDate = g.startDate,
                            EndDate = g.endDate


                     };

        return View(query);

Как мне добавить предложение where, которое будет содержать

Где дата начала в ближайшие 3 месяца с сегодняшнего дня?* Спасибо

Обновление

Рабочий код

var now = DateTime.UtcNow;
        var limit = now.AddDays(90);
        var query =
        from f in _db.Production
        join g in _db.Run on f.show equals g.Production.show
        where g.endDate >= now && g.startDate <= limit


                    select new ViewProductions
                    {
                        Venuename = g.venue,
                        Showname = f.show,
                        StartDate = g.startDate,
                        EndDate = g.endDate
                    };



        return View(query);

Еще раз спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2011

Поскольку это Linq to Sql / Entities, вам нужно сначала вычислить дату, а затем использовать ее в запросе:

DateTime futureDate = DateTime.Now.AddMonths(3);
from f in _db.Production
join g in _db.Run on f.show equals g.Production.show
where g.StartDate <= futureDate && g.StartDate >= DateTime.Now
...
2 голосов
/ 04 апреля 2011

Поскольку вы не можете использовать какие-либо методы DateTime.Add* в linq-to-sql или в структуре сущностей, вам придется использовать переменные:

var now = DateTime.UtcNow;
var limit = now.AddDays(90);
var query =  from f in _db.Production
             join g in _db.Run on f.show equals g.Production.show
              where g.StartDate >= now && g.StartDate <= limit
              select new ViewProductions {
                      Venuename = g.venue,
                      Showname = f.show,
                      StartDate = g.startDate,
                      EndDate = g.endDate    
                     };
0 голосов
/ 04 апреля 2011

Добавьте эту строку в ваш запрос:

var query =  
from f in _db.Production
join g in _db.Run on f.show equals g.Production.show
where g.startDate > DateTime.Today && 
g.startDate < DateTime.Today.Add(TimeSpan.FromDays(90))
 ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...