Spesso vedo persone che utilizzano Where.FirstOrDefault()
effettuare una ricerca e afferrare il primo elemento. Perché non usare solo Find()
? C'è un vantaggio per l'altro? Non potrei dire una differenza.Find() vs. Where(). FirstOrDefault()
namespace LinqFindVsWhere
{
class Program
{
static void Main(string[] args)
{
List<string> list = new List<string>();
list.AddRange(new string[]
{
"item1",
"item2",
"item3",
"item4"
});
string item2 = list.Find(x => x == "item2");
Console.WriteLine(item2 == null ? "not found" : "found");
string item3 = list.Where(x => x == "item3").FirstOrDefault();
Console.WriteLine(item3 == null ? "not found" : "found");
Console.ReadKey();
}
}
}
FWIW, 'list.FirstOrDefault (x => x ==" item3 ");' è più conciso rispetto all'utilizzo di '.Where' e' .FirstOrDefault'. –
@Kirk, immagino che la mia prossima domanda sia perché hanno aggiunto il risultato. Questo è un buon consiglio. L'unica cosa che posso pensare è che il FirstOrDefault potrebbe restituire un valore predefinito diverso diverso da null. Altrimenti sembra un'aggiunta inutile. – KingOfHypocrites
'Trova' precedente a LINQ. (era disponibile in .NET 2.0 e non si poteva usare lambdas. Si è costretti a usare metodi normali o metodi anonimi) –