PDA

View Full Version : مشكل اين كوئري چيه؟



irana8
شنبه 17 تیر 1391, 09:28 صبح
سلام دوستان
من با استفاده از يك كوئري به اين شكل
var q2 = context.esdetails.Where(s => s.no_melli == textBox1.Text);
يه مقداري رو بدست ميارم اما مشكل اينجاست كه من فقط آخرين مقدار را ميخام براي همين به اين شكل تغييرش دادم
var q2 = context.esdetails.Where(s => s.no_melli == textBox1.Text).Last();
اما با پيام خطاري زير روبرو ميشم
LINQ to Entities does not recognize the method 'medical.esdetail Last[esdetail](System.Linq.IQueryable`1[medical.esdetail])' method, and this method cannot be translated into a store expression.
ممكنه راهنمايي كنيد؟ ممنون

uniqueboy_ara
شنبه 17 تیر 1391, 10:16 صبح
منم با متد Last مشکل دارم، ولی میشه اینجوری بهش کلک زد :)
نتایج کوئری رو با توجه به کلید اصلی به صورت معکوس در بیاری، و اونوقت اولین مقدار رو ازش بگیری که در واقع همون آخرین مقدار در حالت عادی هستش :)
var list2 = context.esdetails.Where(s => s.no_melli == textBox1.Text).OrderByDescending(M => M.ID).First();

irana8
شنبه 17 تیر 1391, 10:23 صبح
منم با متد Last مشکل دارم، ولی میشه اینجوری بهش کلک زد :)
نتایج کوئری رو با توجه به کلید اصلی به صورت معکوس در بیاری، و اونوقت اولین مقدار رو ازش بگیری که در واقع همون آخرین مقدار در حالت عادی هستش :)
var list2 = context.esdetails.Where(s => s.no_melli == textBox1.Text).OrderByDescending(M => M.ID).First();
ممنون كارم را راه انداختي
اما واقعا مشكل كار ما كجاست؟

uniqueboy_ara
شنبه 17 تیر 1391, 15:14 عصر
نمیدونم والا، من همه جورشو امتحان کردم ولی جواب نگرفتم :|

gwbasic
یک شنبه 18 تیر 1391, 01:08 صبح
کوئری نوشته شده در نهایت باید به دستور SQL تبدیل بشه اما لزوما هر کوئری Linq ای نمیتونه به دستور SQL تبدیل بشه در SQL‌ ما Select Top‌ رو داریم اما مثلا Select Bottom رو نداریم که بتوان آخرین نتیجه رکورد کوئری رو بدست آورد بنابراین همانطور که اشاره شد با استفاده از OrderByDescending‌ می شه ترتیب رو عکس کرد و از First بجای Last‌استفاده کرد در اینصورت کوئری به Select top 1 تبدیل خواهد شد