سعید صفایی | SAEED SAFAEE

تفاوت بين SingleOrDefault با FirstOrDefault

سعید صفایی دیدگاه
تفاوت بين SingleOrDefault با FirstOrDefault

اگرچه موضوع شاید واضح باشد برای حرفه ای ها اما دوستانی هستند که فرق کلیدی بین این دو را نمی دانند.

زمانی که از linq و lamda استفاده می کنید در EF به دفعات زیادی از این دو متد استفاده می شود


ابتدا ()Single

دقیقاً 1 نتیجه وجود دارد ، در صورت عدم بازگشت نتیجه یا بیش از یک نتیجه ، یک استثنا پرتاب می شود.

اما ()SingleOrDefault

همان single است که null را پشتیبانی میکند

زمانی از موارد بالا استفاده میشود که فقط یک رکورد در دیتابیس وجود داشته باشد.


متد ()First

حداقل یک نتیجه وجود دارد ، در صورت عدم بازگشت نتیجه ، یک استثنا پرتاب می شود.


اما ()FirstOrDefault

همان first است که null را پشتیبانی میکند.


فرق کلیدی

اگر از single استفاده کنید بعد از یافتن اولین رکورد مابقی دیتابیس را هم طی میکند تا رکورد بعدی مطمئن شود وجود ندارد.

اگر از First استفاه کنید بعد از یافتن اولین رکورد از طی کردن ادامه دیتابیس خارج میشود در نتیجه پرفورمنس بالاتری دارد.


معادل TSQL

single(): SELECT ...

first(): SELECT TOP 1...


امیدوارم مفید بوده باشه.



دیدگاه خود را بگذارید