Tôi thường thấy mọi người sử dụng Where.FirstOrDefault()
để thực hiện tìm kiếm và lấy phần tử đầu tiên. Tại sao không chỉ sử dụng Find()
? Có một lợi thế cho người khác? Tôi không thể nói sự khác biệt.
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
trước LINQ. (nó có sẵn trong .NET 2.0 và bạn không thể sử dụng lambdas. Bạn đã buộc phải sử dụng các phương thức bình thường hoặc phương thức ẩn danh)
list.FirstOrDefault(x => x == "item3");
ngắn gọn hơn so với sử dụng cả hai.Where
và.FirstOrDefault
.