WORDS
Introduktion till Linq: ToList() och ToArray()
Det här inlägget om Linq (Language Integrated Query), handlar om hur man kan konvertera en samling till en annan typ.
ToList()
Om man har en IEnumerable
kan det finnas många anledningar att göra om den till en lista. Man kanske behöver returnera samlingen som en lista, eller så vill man säkerställa att den IEnumerable
man har inte gås igenom flera gånger (t.ex. kan det ske två databasfrågor om man kollar innehållet i sin IQueryable
två gånger). Tillsammans med Select()
och Where()
blir detta mycket kraftfullt.
/// <summary>
/// Hämta längderna av dom strängar som är över 100 tecken långa.
/// </summary>
IList<int> GetLengthsOfLongStrings(IList<string> strings)
{
var results = strings
.Where(x => x.Length > 100)
.Select(x => x.Length)
.ToList();
return results;
}
// Skriv *inte* såhär - metoden ovanför gör samma sak kortare.
IList<int> GetLengthsOfLongStringsBad(IList<string> strings)
{
var results = new List<int>();
foreach (var str in strings)
{
if (str.Length > 100)
{
results.Add(str.Length);
}
}
return results;
}
ToArray()
Om man behöver en array, så kan ToArray()
användas. Den fungerar på samma sätt som ToList()
, men om du har en situation där du kan välja den ena eller den andra, så rekommenderar jag ToList()
.