ฉันมักจะเห็นคนที่ใช้Where.FirstOrDefault()
ทำการค้นหาและคว้าองค์ประกอบแรก ทำไมไม่ใช้เพียงFind()
? มีข้อได้เปรียบอื่น ๆ หรือไม่? ฉันไม่สามารถบอกความแตกต่าง
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
ถือกำเนิด LINQ (มันมีอยู่ใน. NET 2.0 และคุณไม่สามารถใช้ lambdas ได้คุณถูกบังคับให้ใช้วิธีการปกติหรือวิธีการที่ไม่ระบุตัวตน)
list.FirstOrDefault(x => x == "item3");
กระชับมากขึ้นกว่าการใช้ทั้งสองและ.Where
.FirstOrDefault