Gegevens filteren in C# met LINQ
Filteren verwijst naar de werking van het beperken van de resultatenset om alleen de elementen te bevatten die voldoen aan een opgegeven voorwaarde. Het wordt ook wel elementen geselecteerd die overeenkomen met de opgegeven voorwaarde.
Belangrijk
In deze voorbeelden wordt een System.Collections.Generic.IEnumerable<T> gegevensbron gebruikt. Gegevensbronnen op System.Linq.IQueryProvider basis van het gebruik van System.Linq.IQueryable<T> gegevensbronnen en expressiestructuren. Expressiestructuren hebben beperkingen voor de toegestane C#-syntaxis. Bovendien kan elke IQueryProvider
gegevensbron, zoals EF Core , meer beperkingen opleggen. Raadpleeg de documentatie voor uw gegevensbron.
In de volgende afbeelding ziet u de resultaten van het filteren van een reeks tekens. Het predicaat voor de filterbewerking geeft aan dat het teken 'A' moet zijn.
De standaardqueryoperatormethoden die selectie uitvoeren, worden weergegeven in de volgende tabel:
Methodenaam | Beschrijving | Syntaxis van C#-queryexpressie | Meer informatie |
---|---|---|---|
OfType | Selecteert waarden, afhankelijk van de mogelijkheid om te casten naar een opgegeven type. | Niet van toepassing. | Enumerable.OfType Queryable.OfType |
Waar | Selecteert waarden die zijn gebaseerd op een predicaatfunctie. | where |
Enumerable.Where Queryable.Where |
In het volgende voorbeeld wordt de where
component gebruikt om te filteren op een matrix die tekenreeksen met een specifieke lengte hebben.
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query = from word in words
where word.Length == 3
select word;
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/
De equivalente query met behulp van de methodesyntaxis wordt weergegeven in de volgende code:
string[] words = ["the", "quick", "brown", "fox", "jumps"];
IEnumerable<string> query =
words.Where(word => word.Length == 3);
foreach (string str in query)
{
Console.WriteLine(str);
}
/* This code produces the following output:
the
fox
*/