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?
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