Find() vs Où().FirstOrDefault()

Je vois souvent des gens en utilisant Where.FirstOrDefault() de faire une recherche et de saisir le premier élément. Pourquoi ne pas simplement utiliser Find()? Est-il un avantage à l'autre? Je ne pouvais pas dire une différence.

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"); est plus concis que l'aide de deux .Where et .FirstOrDefault.
  • Je suppose que ma prochaine question serait pourquoi ont-ils ajouter le trouver à tous. C'est une bonne astuce. La seule chose que je peux penser, c'est que le FirstOrDefault pourrait retourner une valeur par défaut différente de la valeur autre que null. Sinon, il semble juste comme une inutile de plus.
  • Find est antérieure à LINQ. (il était disponible .NET 2.0 et vous ne pouvez pas utiliser les lambdas. Vous avez été obligé d'utiliser des méthodes ou des méthodes anonymes)