A menudo veo a personas que usan Where.FirstOrDefault()
hacer una búsqueda y tomar el primer elemento. ¿Por qué no usar Find()
? ¿Hay alguna ventaja para el otro? No podría notar la diferencia.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 ");' es más conciso que utilizar tanto '.Where' como' .FirstOrDefault'. –
@Kirk, supongo que mi siguiente pregunta sería por qué agregaron el hallazgo. Ese es un buen consejo. Lo único que se me ocurre es que FirstOrDefault podría devolver un valor por defecto distinto de null. De lo contrario, parece una adición sin sentido. – KingOfHypocrites
'Encontrar' es anterior a LINQ. (estaba disponible en .NET 2.0 y no se podía usar lambdas. Se le forzó a usar métodos normales o métodos anónimos) –