2009-08-10 17 views
11

Quiero devolver un recuento de usuarios nuevos desde una fecha específica.Devolver un recuento con linq-to-sql

La tabla de usuarios tiene: ID de usuario, nombre de usuario, fechaConjuntado.

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

¿Cómo sería esto en linq-to-sql?

¿Se puede usar la palabra clave COUNT?

Respuesta

1

Supongo que tiene una lista IEnumberable llamada users y alguna variable llamada somedate.

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

Esto funcionará en contra de cualquier lista IEnumberable no sólo LINQ a SQL

+1

Sin embargo, debe tenerse en cuenta que esto solo llama a un método de extensión. En realidad, no es LINQ (en el sentido de que LINQ es una sintaxis de lenguaje para realizar consultas, solo está utilizando los métodos de extensión que utiliza LINQ). No hay nada de malo en eso, solo vale la pena notarlo. –

+1

No necesita el "Dónde()". Simplemente ponga la expresión lambda en "Count()". – Suncat2000

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

Usted puede ir en dos rutas:

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

o

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

Ambos son equivalentes , realmente se reduce a un mate er de preferencia personal.

+2

Creo que el primero no se compila porque requiere una selección, pero recomendaría el segundo. –

+1

Puede hacer el segundo ejemplo con una sola llamada a Count(). int count = context.Users.Count (x => x.datJoined> date); –

+1

El primero funciona bien tal como está ahora, y no parece que haya sido editado. – nasch

Cuestiones relacionadas