2009-03-09 10 views
6

Tengo una tabla de base de datos que podría contener muchos registros y me gustaría contar el total actual en la tabla. Iba a hacer un simple:LINQ y el método de extensión Count

DataContext.Table.Count(c => c.condition); 

Hasta que me di cuenta el tipo de cambio de Count es int. ¿Qué sucede si la tabla contiene más valores de los que se pueden representar en 32 bits? ¿Cómo puedo contarlos?

¿Debería contarlos de otra manera cuando estamos hablando de ese tipo de báscula?

+0

Aunque el método de extensión LongCount() es su solución, con toda probabilidad saldrá de la excepción de memoria en tiempo de ejecución si el conjunto de resultados del filtro excede el número representado por 'int.MaxValue'. De hecho, fallará muy por debajo de 'int.MaxValue', olvidará ir a' long' (BIGINT en SQL) rango de registros. CLR restringe el tamaño máximo permitido de un objeto a 2 GB. Considere volver a diseñar su aplicación si realmente trae esos muchos registros en la memoria. Más detalles aquí - http://stackoverflow.com/questions/1087982/single-objects-still-limited-to-2-gb-in-size-in-clr-4-0 – RBT

Respuesta

10

Use LongCount(), lo mismo pero con un resultado de 64 bits.

0

Mi solución fue utilizar el método de extensión .LongCount().

+0

No usar respuestas para responder otros carteles. Use comentarios o edite su pregunta. Este no es un foro de discusión. – GEOCHET

+0

Me pareció que él mismo había encontrado la respuesta y la había publicado, en lugar de responder. –

+0

@Mark: Su publicación original fue una disculpa por no encontrarla. Lo he editado. – GEOCHET

Cuestiones relacionadas