Ich sehe oft Leute Where.FirstOrDefault(), die eine Suche durchführen und das erste Element greifen. Warum nicht einfach benutzen Find()? Gibt es einen Vorteil für den anderen? Ich konnte keinen Unterschied feststellen.
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();
}
}
}
Findälter als LINQ. (Es war in .NET 2.0 verfügbar und Sie konnten keine Lambdas verwenden. Sie mussten normale oder anonyme Methoden verwenden.)
list.FirstOrDefault(x => x == "item3");ist prägnanter als die Verwendung von.Whereund.FirstOrDefault.