اگر بخواهیم اولین رکورد از یک جدول را توسط EF درخواست نماییم از متد Firstیا FirstOrDefault استفاده میشود. برای مثال واکشی اولین رکورد از جدول Student به صورت زیر است:
var student=context.Students.FirstOrDefault();
حال اگر بخواهید به جای اولین رکورد آخرین رکورد را واکشی نمایید چطور؟ برای یافتن آخرین رکورد در لیستها ی Generic و کلا لیستهای Enumerable از متد LastOrDefault استفاده میشود. با این حال این متد توسط Entity Framework پشتیبانی نمیشود و در صورتی که از کد زیر استفاده کنید برنامه با خطا متوقف خواهد شد:
var student=context.Students.LastOrDefault();
روش اول:میتوان خروجی را ابتدا به یک نوع Enumerable مانند List تبدیل کرد و سپس از متد LastOrDefault استفاده کرد. کد زیر را در نظر بگیرید:
var student=context.Students.ToList().LastOrDefault();
روش دوم:با توجه به اینکه تنها به یک رکورد (آخرین رکورد) نیاز داریم بهتر است یک رکورد هم واکشی شود. در این روش برای اینکه بتوان به آخرین رکورد رسید ابتدا رکوردهای جدول را به صورت نزولی مرتب میکنیم و سپس از متد FirstOrDefault برای واکشی آخرین رکورد استفاده مینمایید. برای مثال:
var student=context.Students.OrderByDescending(s=>s.Id).FirstOrDefault();