Was ist der Unterschied zwischen IEnumerable und IQueryable in C#?

王林
Freigeben: 2023-09-03 19:57:08
nach vorne
894 Leute haben es durchsucht

C# 中 IEnumerable 和 IQueryable 有什么区别?

  • IEnumerable existiert im System.Collections-Namespace.
  • IQueryable existiert im System. Linq-Namespace.
  • IEnumerable und IQueryable sind beide Vorwärtssammlungen.
  • IEnumerable unterstützt kein verzögertes Laden.
  • IQueryable unterstützt verzögertes Laden.
  • Beim Abfragen von Daten aus der Datenbank führt IEnumerable eine Auswahlabfrage auf der Serverseite durch, lädt die Daten auf der Clientseite in den Speicher und filtert sie dann.
  • Um Daten aus der Datenbank abzufragen, führt IQueryable eine ausgewählte Abfrage auf der Serverseite mit allen Filtern durch.
  • IEnumerable-Erweiterungsmethoden akzeptieren Funktionsobjekte.
  • Die IQueryable-Erweiterungsmethode benötigt ein Ausdrucksobjekt, das einen Ausdrucksbaum bedeutet.

Beispiel

IEnumerable

dbContext dc = new dbContext ();
IEnumerable
<SocialMedia>
list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
</SocialMedia>
Nach dem Login kopieren

SQL-Anweisung, die für die obige Abfrage generiert wurde

SELECT [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0
Nach dem Login kopieren

Queryable

dbContext dc = new dbContext ();
IQueryable<SocialMedia> list = dc.SocialMedias.Where(p => p.Name.StartsWith("T"));
list = list.Take<SocialMedia>(1);
Nach dem Login kopieren

SQL-Anweisung, die für die obige Abfrage generiert wurde

SELECT top 1 [t0].[ID], [t0].[Name] FROM [SocialMedia] AS [t0]
WHERE [t0].[Name] LIKE @p0
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen IEnumerable und IQueryable in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage