2009-08-10 9 views
11

Je souhaite retourner le nombre de nouveaux utilisateurs depuis une date spécifique.Renvoie un nombre avec linq-to-sql

La table des utilisateurs a: UserID, nom d'utilisateur, dateJoined.

SELECT COUNT(USERID) 
FROM Users 
where dateJoined > @date 

À quoi cela ressemblerait-il dans linq-to-sql?

Pouvez-vous utiliser le mot-clé COUNT?

Répondre

1

Je suppose que vous avez une liste IEnumberable appelée users et une variable appelée somedate.

int count = users 
    .Where<User>(i => i.dateJoined > someDate) 
    .Count<User>(); 

Cela fonctionne contre toute liste IEnumberable non seulement LINQ to sql

+1

Il convient de noter, cependant, que cela appelle simplement une méthode d'extension. Ce n'est pas réellement LINQ (dans le sens où LINQ est une syntaxe de langage pour l'interrogation, vous utilisez simplement les méthodes d'extension que LINQ utilise). Rien de mal à cela, juste à noter. –

+1

Vous n'avez pas besoin du "Où()". Mettez simplement l'expression lambda dans "Count()". – Suncat2000

1
(from u in context.Users where u.dateJoined > date select u).Count() 
13

Vous pouvez aller deux itinéraires:

var count = (from u in context.Users where u.datJoined > date select u).Count(); 

ou

var count = context.Users.Where(x => x.datJoined > date).Count(); 

les deux sont équivalents , ça se résume vraiment à un mat er de préférence personnelle.

+2

Je pense que le premier ne compile pas car il nécessite un select, mais je recommanderais le second. –

+1

Vous pouvez faire le deuxième exemple avec un seul appel à Count(). int count = context.Users.Count (x => x.datJoined> date); –

+1

Le premier fonctionne bien comme il est maintenant, et il ne semble pas qu'il a été modifié. – nasch

Questions connexes