let-component (C#-verwijzing)
In een query-expressie is het soms handig om het resultaat van een subexpressie op te slaan om deze in volgende componenten te gebruiken. U kunt dit doen met het let
trefwoord, waarmee een nieuwe bereikvariabele wordt gemaakt en geïnitialiseerd met het resultaat van de expressie die u opgeeft. Zodra deze is geïnitialiseerd met een waarde, kan de bereikvariabele niet worden gebruikt om een andere waarde op te slaan. Als de bereikvariabele echter een querybaar type bevat, kan deze worden opgevraagd.
Opmerking
In het volgende voorbeeld let
wordt op twee manieren gebruikt:
Als u een opsommingsbaar type wilt maken dat zelf kan worden opgevraagd.
Als u wilt dat de query slechts één keer wordt aangeroepen
ToLower
op de bereikvariabeleword
. Zonder gebruiklet
, moet u elk predicaat in dewhere
component aanroepenToLower
.
class LetSample1
{
static void Main()
{
string[] strings =
[
"A penny saved is a penny earned.",
"The early bird catches the worm.",
"The pen is mightier than the sword."
];
// Split the sentence into an array of words
// and select those whose first letter is a vowel.
var earlyBirdQuery =
from sentence in strings
let words = sentence.Split(' ')
from word in words
let w = word.ToLower()
where w[0] == 'a' || w[0] == 'e'
|| w[0] == 'i' || w[0] == 'o'
|| w[0] == 'u'
select word;
// Execute the query.
foreach (var v in earlyBirdQuery)
{
Console.WriteLine("\"{0}\" starts with a vowel", v);
}
}
}
/* Output:
"A" starts with a vowel
"is" starts with a vowel
"a" starts with a vowel
"earned." starts with a vowel
"early" starts with a vowel
"is" starts with a vowel
*/