Ho una tabella di database che potrebbe contenere molti record e vorrei contare il totale corrente nella tabella. Stavo per fare un semplice:LINQ e il metodo di estensione Count
DataContext.Table.Count(c => c.condition);
Fino a quando ho capito il tipo di ritorno per Count
è int
. Cosa succede se la tabella deve contenere più valori di quelli che possono essere rappresentati in 32 bit? Come posso contarli?
Devo contarli in un modo diverso quando parliamo di quel tipo di scala?
Anche se il metodo di estensione LongCount() è la soluzione, ma in tutte le probabilità, si uscirà dall'eccezione di memoria in fase di esecuzione se il set di risultati del filtro sta superando il numero rappresentato da "int.MaxValue'. In effetti, fallirà molto al di sotto di 'int.MaxValue', dimenticando la gamma di record' long' (BIGINT in SQL). CLR limita la dimensione massima consentita di un oggetto a 2 GB. Ti preghiamo di prendere in considerazione la possibilità di riprogettare la tua applicazione se ti capita davvero di portare quei record in memoria. Maggiori dettagli qui - http://stackoverflow.com/questions/1087982/single-objects-still-limited-to-2-gb-in-size-in-clr-4-0 – RBT