Filtrera data i C# med LINQ
Filtrering syftar på att begränsa resultatuppsättningen till att endast innehålla de element som uppfyller ett angivet villkor. Det kallas även för att välja element som matchar det angivna villkoret.
Viktigt!
Dessa exempel använder en System.Collections.Generic.IEnumerable<T> datakälla. Datakällor baserade på System.Linq.IQueryProvider användning av System.Linq.IQueryable<T> datakällor och uttrycksträd. Uttrycksträd har begränsningar för den tillåtna C#-syntaxen. Dessutom kan varje IQueryProvider
datakälla, till exempel EF Core , införa fler begränsningar. Kontrollera dokumentationen för din datakälla.
Följande bild visar resultatet av filtrering av en sekvens med tecken. Predikatet för filtreringsåtgärden anger att tecknet måste vara "A".
Standardmetoderna för frågeoperatorer som utför markeringen visas i följande tabell:
Metodnamn | beskrivning | Syntax för C#-frågeuttryck | Mer information |
---|---|---|---|
OfType | Väljer värden, beroende på deras förmåga att omvandlas till en angiven typ. | Ej tillämpbart. | Enumerable.OfType Queryable.OfType |
Där | Väljer värden som baseras på en predikatfunktion. | where |
Enumerable.Where Queryable.Where |
I följande exempel används where
-satsen för att filtrera från en matris de strängar som har en specifik längd.
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
*/
Motsvarande fråga med metodsyntax visas i följande kod:
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
*/