دسته بندی ها
19:49 1399/04/14

دریافت مقدار ثابت در کویری Linq

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : سی شارپ Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2525
پاسخ دهنده : Sowgandi 19:58 1399/04/14

سلام. دوست عزیز کدتون رو به شکل زیر اصلاح کنید درست میشه.

var age = (from u in _context.users where u.userid == userid select new {u.age}).Single();

 

به این پاسخ امتیاز بدهید    0
امتیاز: 871 رتبه: 3
پاسخ دهنده : Sowgandi 20:21 1399/04/14

خب دوست عزیز مقدار فیلتر شده شما در کوئری بیش از یک مورد هست در صورتی که شما در اخر کوئری از Single استفاده کردید!

 مقدار userid رو چک کنید ببینید درست هست یا خیر؟ در صورتی که درست باشه، کاربری با این آی دی بیش یک مورد در دیتابیس وجود داره!

ویرایش شده در شنبه 14 تیر 1399 ساعت 20:23:26
به این پاسخ امتیاز بدهید    0
امتیاز: 871 رتبه: 3
پاسخ دهنده : Sowgandi 20:39 1399/04/14
var age = (from u in _context.product where u.supplierid == supplierid select u.number).Max();

کد بالا بزرگترین عدد ثبت شده رو بر میگردونه. و اگر به جای Max کلمه Last رو قرار بدید آخرین عدد رو برمیگردونه

تست بفرمایید و اگر مشکل برطرف نشد اعلام بفرمایید.

ویرایش شده در شنبه 14 تیر 1399 ساعت 20:43:00
به این پاسخ امتیاز بدهید    0
امتیاز: 871 رتبه: 3
پاسخ دهنده : saedbfd 20:49 1399/04/14

سلام

نکته اول دقت کنید که شما یک متغیر از نوع var تعریف کردید و پاسخ کوئری رو داخل این متغیر قرار دادید. بنابراین انتظار نداشته باشید بتونید مثل یک List باهاش برخورد کنید.

کوئری شما میتونه به کوئری زیر تغییر کنه

 

   var age = (from u in _context.product where u.supplierid == supplierid select u)
                         .ToList().OrderByDescending(o => o.supplierid).Take(1).Select(s => new { supid = s.supplierid });

   int lastnum = age.First().supid;

 

در کوئری بالا چند نکته وجود داره

 

  1. اول اینکه ممکنه خروجی شما چندین عدد داشته باشه و شما توی توضیحات پاسخهاتون گفتید آخرین عدد رو لازم دارید. بنابراین با استفاده از دستور orderbydescending خروجی رو از آخر به اول مرتب می کنیم.
  2. در ادام از دستور Take(1) استفاده کردیم. یعنی آخرین سطر رو که آخرین عدد هم در این سطر هست رو گرفتیم.
  3. و در نهایت با استفاده از دستور Select فقط ستون مورد نظر که supplierid هست رو انتخاب کردیم و یک اسم به نام supid بهش دادیم.

خب تا اینجا مقدار آخرین عدد رو داریم اما اگر الان نمیتونید مثل یک متغیر int از این عدد استفاده کنید بنابراین در ادامه در متغیر lastnum آخرین اولین عدد موجود در متغیر var رو دریافت کردیم.

 

در حال حاضر متغیر lastnum یک متغیر معمولی int با مقدار آخرین عدد شما هست

 

موفق باشید

ویرایش شده در شنبه 14 تیر 1399 ساعت 20:57:07
به این پاسخ امتیاز بدهید    2
امتیاز: 1654 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود