2016-09-30 13 views
-5

Ich habe diese LINQ-Anweisung unter Verwendung von:Gibt es eine Möglichkeit, dass ich eine Anzahl von Zeilen mit einer LINQ-Anweisung erhalten kann?

var phrases = await db.Phrases 
       .AsNoTracking() 
       .ToListAsync(); 

Aber was ich brauche ist eine Zählung der Anzahl der Zeilen in Sätzen zu erhalten.

Ich habe LINQ noch nie zuvor verwendet. Gibt es eine Möglichkeit, dass ich das tun kann?

+10

'.Count()' schreiben ???? – Habib

+3

Was @Habib sagte, und auch eine der goldenen Regeln für die Softwareentwicklung: RTFM https://msdn.microsoft.com/en-us/library/mt693024.aspx –

Antwort

4

Die sync version:

var phrasesCount = db.Phrases.Count(); 

Die async version (vorausgesetzt, dies ist EF):

var phrasesCount = await db.Phrases.CountAsync(); 
+1

Es könnte erwähnenswert sein, dass, wenn Sie ' Es werden keine Elemente zurückgegeben (ich weiß, dass Sie hier scheinbar Elemente haben möchten), dass Sie mit der Methode .Query() eine leistungsfähigere Zählung aus der Datenbank erhalten können: http://stackoverflow.com/questions/22186674/entity -framework-poor-count-performance –

+0

@ChadMcGrath scheint es aus der Frage und [verknüpfte Dokumente] (https://msdn.microsoft.com/en-us/data/jj574232.aspx#queryCount), dass dies nur für anwendbar ist das Zählen * verwandter * Entitäten, was hier nicht der Fall ist. Es scheint, dass [Abfrage] (https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcollectionentry.query (v = vs.113) .aspx # M: System.Data. Entity.Infrastructure.DbCollectionEntry.Query) ist eine Instanzmethode für 'DbCollectionEntry'. Daher bin ich mir nicht sicher, ob das erste Bit in der Antwort kompiliert wird. –

1

Charles bereitgestellt gültige Antwort, aber da Sie nie zuvor mit LINQ gearbeitet, dann ist es schön zu wissen, dass Mit .Count() können Sie das Prädikat als Argument übergeben.

Zum Beispiel, wenn Sie möchten, Phrasen zählen, die als 30 Zeichen länger sind, könnten Sie so etwas wie dieses

var longPhrases = db.Phrases.Count(phrase => phrase.Lenght > 30); 
Verwandte Themen