2015-07-30 1 views
1

J'essaie de créer un attribut "Level" qui sera mis à 0 si les enregistrements CompletedDate est le plus grand/max dans l'ensemble des résultats, sinon placez-le à 1. J'ai besoin de savoir quel "niveau" il est à des fins de production afin que je puisse correctement rendre les divs imbriqués. Toutes les idées seraient très appréciées.Linq Sélectionner une nouvelle propriété SI La date est Max()

From g In pciData.AsEnumerable() _ 
Order By (g.SmartForm.CompletedDate) Descending _ 
Select _ 
    Name = IIf(g.SmartForm.FormName Is Nothing, "", g.SmartForm.FormName.ToString()), _ 
    Level = IIf(_ 
    iif(Date.Parse(g.SmartForm.CompletedDate) = "GET MAX DATE OF RESULT SET HERE", 0, 1) 

RÉPONSE

Level = IIf(Date.Parse(g.SmartForm.CompletedDate) = _ 
Date.Parse(pciData.Max(Function(m) m.SmartForm.CompletedDate)), 0, 1) 
+1

Je calcule cette date avant ces appels et l'utilisent dans le IIf. Quelque chose comme ceci 'Dim maxDate As DateTime = pciData.AsEnumerable(). Max (Fonction (s) à.CompletedDate)' – Saragis

+0

Merci @Saragis Je vais essayer que si tout le reste échoue, mais je veux vraiment l'avoir dans la même requête . Même si ce n'est pas dans la clause select. J'ai mis à jour ma question. – Eric

+1

Eh bien, il est certainement également possible d'utiliser 'pciData.AsEnumerable(). Max (Fonction (s) s.CompletedDate)' à l'intérieur de votre IIf. Je ne sais pas comment cela va affecter les performances par rapport à ce que j'ai suggéré (pourrait avoir un effet). – Saragis

Répondre

2

Essayez quelque chose comme ceci:

(non testé Freehand typé code..may contiennent des fautes de frappe)

From g In pciData.AsEnumerable() _ 
Let MaxDate = g.max(function(f) f.CompletedDate) _ 
Order By (g.SmartForm.CompletedDate) Descending _ 
Select _ 
Name = IIf(g.SmartForm.FormName Is Nothing, "", g.SmartForm.FormName.ToString()), _ 
Level = IIf(_ 
iif(Date.Parse(g.SmartForm.CompletedDate) > MaxDate, 0, 1) 
+0

Je mets le mien à l'heure exacte :) cela fonctionnerait aussi juste je pense. – Eric