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

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *