Avatar ·

متى تستخدم .First() ومتى تستخدم .FirstOrDefault() في LINQ في C#؟

مرحبًا بالجميع! بدأت مؤخرًا في تعلم C# وLINQ، وواجهت موقفًا غير واضح. هناك طريقتان متشابهتان: `.First()` و `.FirstOrDefault()`. أفهم أن كلاهما يُرجع العنصر الأول من التسلسل، لكن ما الفرق بينهما؟ لنفترض أن لدي قائمة بالمستخدمين: ```csharp List users = new List { "Alice", "Bob", "Charlie" }; ``` إذا كتبت: ```csharp string firstUser = users.First(u => u.StartsWith("Z")); ``` فأحصل على استثناء `InvalidOperationException`. أما إذا استخدمت `.FirstOrDefault()`: ```csharp string firstUser = users.FirstOrDefault(u => u.StartsWith("Z")); ``` فلا يوجد استثناء، و`firstUser` يساوي `null`. لكن متى يكون من الأصح استخدام أي من الخيارين؟ قرأت أن `.First()` يرمي استثناء إذا لم يتم العثور على شيء، بينما `.FirstOrDefault()` يُرجع القيمة الافتراضية. لكنني لا أفهم تمامًا في أي السيناريوهات يجب المخاطرة بالاستثناء، وفي أيها من الأفضل إرجاع `null` أو القيمة الافتراضية.