2009-06-23 7 views
0

Je suis en train de rédiger une déclaration LINQ comme suit:Confondre déclaration LINQ

Le résultat devrait suivre entre deux dates (essentiellement aujourd'hui) OU le résultat devrait avoir une colonne « batchstatus » qui est false (n'a pas été vérifié encore) le résultat devrait avoir une colonne "prête" qui est vraie (prête à être vérifiée).

Ainsi, les vérificateurs peuvent voir toutes les données d'aujourd'hui, qu'elles aient été vérifiées ou non, MAIS ne devraient pas voir que les utilisateurs ne sont pas encore prêts à être vus.

J'ai essayé ce de plusieurs façons différentes telles que:

Dim p = From t In db.batches _ 
     Where t.bDate > day1 And t.bDate < day2 And t.Ready = True Or t.BatchStatus = False _ 
      Order By t.BatchStatus Ascending _ 
      Select t 

S'il vous plaît me aider à garder mes cheveux; J'ai une poignée maintenant & Je ne sais pas combien de temps je peux garder de le retirer !!!

Merci!

+0

Si vous pouvez rendre votre explication plus claire, il serait plus facile de créer le droit question. Il n'est pas du tout clair comment les trois facteurs (est-il prêt? Est l'état du lot faux? Est-il à partir d'aujourd'hui?) Sont destinés à être combinés. –

Répondre

1

Utilisez des crochets. Ça va faire les choses un plus simple lot. En outre, vous pouvez utiliser les clauses Let pour rendre votre requête plus simple, en vous donnant effectivement des "variables locales" dans la requête. Essayez ceci - la syntaxe peut être légèrement désactivée (je ne suis pas un gars VB) et la logique peut très bien ne pas être ce que vous voulez, mais il est plus facile de comprendre IMO, donc il devrait être plus facile à modifier.

Dim p = From t In db.batches _ 
     Let createdToday = t.bDate > day1 And t.bDate < day2 _ 
     Where createdToday And (t.Ready Or Not t.BatchStatus) _ 
     Order By t.BatchStatus Ascending 
1

Qu'en est-:

Dim p = From t In db.batches _ 
     Where (t.bDate.Date = DateTime.Today Or t.BatchStatus = False) _ 
       And t.Ready = True _ 
      Order By t.BatchStatus Ascending _ 
      Select t 
+1

Celui-ci a travaillé aussi ... Je ne peux pas laisser les deux être la réponse? J'aime celui-ci parce que je n'ai jamais utilisé le datetime. Aujourd'hui avant. J'ai en fait une petite fonction qui crée 2 cordes qui sont le 23 juin 2009 12:00:00 AM & 23 juin 2009 23:59:00 PM; wow je me sens comme un dork ... – wali

0

Merci Jon !!! Il était entre parenthèses dans mon cas:

Dim p = From t In db.batches _ 
      Where (t.bDate > day1 And t.bDate < day2 And t.Ready = True) Or (t.BatchStatus = False And t.Ready = True) _ 
      Order By t.BatchStatus Ascending _ 
      Select t 

Merci encore .... les cheveux étant retiré lentement de poigne de fer ...