У меня есть таблица базы данных, которая может содержать много записей, и я хотел бы подсчитать текущую сумму в таблице. Я собирался сделать простой:LINQ и метод расширения Count
DataContext.Table.Count(c => c.condition);
Пока я не понял, тип возврата для Count
является int
. Что делать, если таблица должна содержать больше значений, чем может быть представлена в 32 битах? Как я могу их подсчитать?
Должен ли я считать их по-другому, когда мы говорим об этом виде масштаба?
Хотя метод расширения LongCount() является вашим решением, но во всех возможных капюшонах вы получите исключение из памяти во время выполнения, если ваш набор результатов фильтра превышает число, представленное 'int.MaxValue'. На самом деле он будет проваливаться ниже 'int.MaxValue', забыв переходить к диапазону записей' long' (BIGINT in SQL). CLR ограничивает максимальный разрешенный размер объекта до 2 ГБ. Пожалуйста, подумайте о повторной архитектуре вашего приложения, если вы действительно принесете столько записей в память. Подробнее здесь - http://stackoverflow.com/questions/1087982/single-objects-still-limited-to-2-gb-in-size-in-clr-4-0 – RBT