2010-11-23 6 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; 

1ère question chose .La est que la façon dont NewsFillter serait accomdated dans la requête postsidebar dans l'objet pstmt après vrai (je mettrais en contient, est égal à joindre ou quoi).asp.net mvc problème datetime LINQ

2e question. est-il possible qu'un morceau (entre & & s) retourne enumerable et je peux m'en tirer avec ça. à ce moment, il ne permet pas que

Répondre

1

Je ne vous ai pas udnerstood correctement, mais si vous voulez appliquer plusieurs filtres, voici ma solution:

//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); 

Vos questions:

  1. Cette question nécessite un exemple d'entrée et de sortie. Essayez quelque chose comme ceci:

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

  2. Il y a la méthode AsEnumerable, si vous voulez dire ce que je pense.

+0

vous êtes proche, je suppose que la requête aura un résultat concaténé basé sur tous les f? – maztt

+0

ok Deuxièmement, puis-je faire un champ variable filtres indépendants comme dans mon cas bookId serait rangée pas une colonne? c'est le vrai problème – maztt

+0

Je ne pense pas qu'il y ait des "filtres de colonnes non" sauf la combinaison Sauter et Prendre (ce sont des filtres par numéro de rangée). Les filtres indépendants du champ peuvent être obtenus en utilisant des requêtes de chaîne, par exemple dans Entity Framework: dc.SomeTable.Where ("it. [" + ColumnName + "] = '" + columnValue + "'"); – vorrtex