2010-11-23 5 views
-1
string NewsFillter = string.Empty; 
      List<string> PublishDatePostMeta = (from post in postrepository.GetAllPosts() 
           join pstmt in postrepository.GetAllPostMetas() 
           on post.int_PostId equals pstmt.int_PostId 
           where (post.int_PostTypeId == 4 && post.int_PostStatusId == 2 && post.int_OrganizationId == layoutrep.GetSidebarDetailById(SidebarDetailsId).int_OrganizationId) && pstmt.vcr_MetaKey=="Publish Date" 
           select pstmt.vcr_MetaValue).ToList(); 
      int DatesCount = PublishDatePostMeta.Count();   
      foreach (string PublishDate in PublishDatePostMeta) 
      { 
       if (PublishDate != "") 
       { 
        NewsFillter += System.DateTime.Now + ">=" + Convert.ToDateTime(PublishDate); 
       } 
      }        

      var postsidebar = from post in postrepository.GetAllPosts() 
           join pstmt in postrepository.GetAllPostMetas() 
           on post.int_PostId equals pstmt.int_PostId 
           where (post.int_PostTypeId == 4 && post.int_PostStatusId == 2 && post.int_OrganizationId == layoutrep.GetSidebarDetailById(SidebarDetailsId).int_OrganizationId) 
           && (pstmt.vcr_MetaKey.Contains(filter) && pstmt.vcr_MetaValue.Contains("true")) 
           select post; 

первый вопрос .The Дело в том, что, как NewsFillter будет accomdated в запросе postsidebar в объекте pstmt после верно (я бы положить его в содержит, равно присоединиться или что).asp.net проблема MVC LINQ DateTime

2-й вопрос. есть ли способ, чтобы кусок (между & & s) возвращаемый перечислимый, и я могу уйти от этого. в этот момент он не позволяет, что

ответ

1

Я не udnerstood вас правильно, но если вы хотите применить несколько фильтров, вот мое решение:

//Book is a table in the database 
List<Expression<Func<Book, bool>>> filters = new List<Expression<Func<Book, bool>>>(); 
IQueryable<Book> query = dc.Books; 

filters.Add(b => b.BookId == long.Parse(id)); 
//apply all filters 
foreach (var f in filters) 
    query = query.Where(f); 

Ваши вопросы:

  1. Этот вопрос требует примера ввода и вывода. Попробуйте что-то вроде этого:

    || pstmt.vcr_MetaKey=="Publish Date" && ( pstmt.vcr_MetaValue == "" || DateTime.Parse(pstmt.vcr_MetaValue) < DateTime.Now)

  2. Существует метод AsEnumerable, если вы имеете в виду то, что я думаю.

+0

Вы близко, я предполагаю, что запрос будет иметь конкатенированный результат, основанный на всех f? – maztt 2010-11-23 11:31:22

Смежные вопросы