2009-03-09 15 views
6

Ich habe eine Datenbanktabelle, die viele Datensätze enthalten könnte und ich möchte die aktuelle Summe in der Tabelle zählen. Ich wollte eine einfach tun:LINQ und die Count-Extension-Methode

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

Bis ich den Rückgabetyp für Countint ist realisiert. Was ist, wenn die Tabelle mehr Werte enthalten soll, als in 32 Bits dargestellt werden können? Wie kann ich sie zählen?

Sollte ich sie auf eine andere Art und Weise zählen, wenn wir über diese Art von Skala sprechen?

+0

Obwohl die LongCount() - Erweiterungsmethode Ihre Lösung ist, erhalten Sie in der Regel eine Laufzeitüberschreitung, wenn Ihr Filterergebnissatz die durch 'int.MaxValue' angegebene Zahl überschreitet. In der Tat wird es weit unter "int.MaxValue", vergessen gehen zu "long" (BIGINT in SQL) Bereich von Datensätzen. CLR beschränkt die maximal zulässige Größe eines Objekts auf 2 GB. Bitte denken Sie darüber nach, Ihre Anwendung neu zu gestalten, wenn Sie wirklich diese vielen Datensätze im Speicher haben. Weitere Details hier - http://stackoverflow.com/questions/1087982/single-objects-still-limited-to-2-gb-in-size-in-clr-4-0 – RBT

Antwort

10

Verwenden Sie LongCount(), die gleiche Sache, aber mit einem 64-Bit-Ergebnis.

0

Meine Lösung war die .LongCount() Erweiterungsmethode zu verwenden.

+0

Verwenden Sie keine Antworten zu antworten andere Poster. Verwenden Sie Kommentare oder bearbeiten Sie Ihre Frage. Dies ist kein Diskussionsforum. – GEOCHET

+0

Es klang für mich, als ob er die Antwort selbst gefunden und gepostet hätte, anstatt zu antworten. –

+0

@Mark: Sein ursprünglicher Beitrag war eine Entschuldigung dafür, es nicht zu finden. Ich habe es bearbeitet. – GEOCHET