En utilisant uniquement la partie année de la date d'une condition where
Dans le LINQ déclaration ci-dessous, je veux choisir les gens avec une date d'examen en 2010. La date de l'examen est stocké comme un datetime comme la date et le temps est utilisé dans d'autres applications. Quel est le plus élégant, le plus simple, la meilleure façon de comparer les exzam date à seulement '2010'. Ou, devrais-je viens de comparer, à l'aide de >=, la date de l'examen à 1/1/2010?
var active = dc.People.Where(x => x.exam >= 2010)
.Select(x => new {x.ContactID, x.FirstName, x.LastName})
);
x.MostRecent == DateTime.Parse("1/1/2010").Year
EDIT #1
J'ai pensé que je devrais voir un .Année sur la date de l'examen, mais je n'ai pas. Après avoir vu quelques posts ici, je suis revenu en arrière et a trouvé cela fonctionne...
.Where(x => x.exam.Value.Year == 2010)
Pourquoi .La valeur nécessaire à l'accès .D'année en année? L'examen est nullable datetime.
.Value
est nécessaire parce que exam
est nullable champ dans votre modèle. (Je suppose que dans votre base de données de la colonne correspondante autorise les valeurs Null.)C'est exact, la DB autorise les valeurs null dans la colonne. Merci.
OriginalL'auteur DenaliHardtail | 2011-01-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser le
Year
bien surDateTime
:Exactement parce que
Exam
est unNullable<DateTime>
. Lorsque vous déclarez une instance deNullable<DateTime>
commenoter que
exam
n'est pas unDateTime
et, par conséquent, vous ne pouvez pas accéder directement aux propriétés deDateTime
. Pour obtenir un béton d'instance deDateTime
vous utilisez leValue
bien surNullable<DateTime>
(tous lesNullable<T>
s ont cette propriété), de sorte queest un
DateTime
en supposant queexam
n'est pasnull
. Vous pouvez donc direet, bien sûr, par souci de concision
Noter que ce sera le jeter si
exam.HasValue
est faux.Exactement parce que
People.Exam
est unNullable<DateTime>
(aka,DateTime?
).Merci pour l'explication! Parfaitement clair maintenant.
OriginalL'auteur jason
Je ne sais pas la façon la plus élégante, mais c'est la façon la plus simple que vous pouvez faire, en supposant examdate est datetime col vous permet de stocker vos date et basé sur
I want to select people with an exam date in 2010
-OriginalL'auteur Vishal