سعید صفایی | SAEED SAFAEE
تفاوت بين SingleOrDefault با FirstOrDefault
اگرچه موضوع شاید واضح باشد برای حرفه ای ها اما دوستانی هستند که فرق کلیدی بین این دو را نمی دانند.
زمانی که از linq و lamda استفاده می کنید در EF به دفعات زیادی از این دو متد استفاده می شود
ابتدا ()Single
دقیقاً 1 نتیجه وجود دارد ، در صورت عدم بازگشت نتیجه یا بیش از یک نتیجه ، یک استثنا پرتاب می شود.
اما ()SingleOrDefault
همان single است که null را پشتیبانی میکند
زمانی از موارد بالا استفاده میشود که فقط یک رکورد در دیتابیس وجود داشته باشد.
متد ()First
حداقل یک نتیجه وجود دارد ، در صورت عدم بازگشت نتیجه ، یک استثنا پرتاب می شود.
اما ()FirstOrDefault
همان first است که null را پشتیبانی میکند.
فرق کلیدی
اگر از single استفاده کنید بعد از یافتن اولین رکورد مابقی دیتابیس را هم طی میکند تا رکورد بعدی مطمئن شود وجود ندارد.
اگر از First استفاه کنید بعد از یافتن اولین رکورد از طی کردن ادامه دیتابیس خارج میشود در نتیجه پرفورمنس بالاتری دارد.
معادل TSQL
single(): SELECT ...
first(): SELECT TOP 1...
امیدوارم مفید بوده باشه.