CodeShot

First() در مقابل Single()

First اولین رکورد موجود را برمی‌گرداند.

ویژگیFirst()Single()
چند نتیجهقبول می‌کندException
هیچ نتیجهExceptionException
FirstOrDefaultداردSingleOrDefault
Performanceسریع‌ترکمی کندتر
کاربرد اصلیگرفتن اولین موردداده Unique

کِی از First() استفاده کنیم؟

Single انتظار دارد دقیقاً یک رکورد وجود داشته باشد.

کِی از Single() استفاده کنیم؟

تفاوت اصلی در تعداد رکوردهای قابل قبول است.

First با چند نتیجه مشکلی ندارد، اما Single در صورت وجود بیشتر از یک نتیجه Exception می‌دهد.

مثال First()

var user = context.Users .First(x => x.Id == 1);

مثال Single()

var user = context.Users .Single(x => x.Email == email);

اشتباه رایج

استفاده از Single برای Queryهای معمولی و دریافت خطا در Production.

جمع‌بندی

یک نتیجه مهم نیست → First

دقیقاً یک نتیجه باید باشد → Single