رفتن به مطلب

محاسبه رتبه یک شخص در سی شارپ


fun_code

ارسال‌های توصیه شده

سلام دوستان

بنده یه برنامه با سی شارپ نوشتم و کمی مشکل دارم.

بنده در دیتابیس اطلاعات 5 هزار کاربر رو دارم.

این لیست دارای فیلدهای Name و Score و Count است.

در برنامه میام لیست 100 کاربر برتر رو بر اساس Score بیشتر و Count کمتر نمایش میدم.

یعنی اولویت بر اساس کاربرانی است که با Count کمتر Score بیشتری دارند.

کد سی شارپ زیر :

var Listuser = new List<Db.user>();
using (var db = new Db.DAL())
{
	Listuser = db.user.OrderByDescending(p => p.Score).ThenBy(p => p.Count).Take(100).ToList();
}

چطور میتونم بر همین اساس رتبه یک کاربر خاص رو بدست بیارم ؟

فرضا کاربری که وارد برنامه میشه و لیست 100 کاربر برتر رو میبینه میخواد رتبه اش رو هم بدونه... فرضا رتبه اش 20 یا 2310 هست.

چطور با یک کد بهینه میتونم رتبه اش رو بدست بیارم و بهش نشون بدم ؟

پیشاپیش از راهنمایی شما سپاسگزارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

به نظر من شما دارید میایید Score  و Count  رو میگیرید، خب بیایید  فیلد امتیاز رو هم بگیرید.

به لیستتون اضافش کنید، بالاخره شما دارید ردیف هارو میگیرید.این ردیف هارو هم میتونید توی یک لیست جدای از بحث دیتابیس بریزید و برای اینکه نخوایید کوئری بزنید با این لیست کار کنید.

البته اگه منظورتونو درست فهمیده باشم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 ساعت قبل، مجید آرتا گفته است :

سلام

به نظر من شما دارید میایید Score  و Count  رو میگیرید، خب بیایید  فیلد امتیاز رو هم بگیرید.

به لیستتون اضافش کنید، بالاخره شما دارید ردیف هارو میگیرید.این ردیف هارو هم میتونید توی یک لیست جدای از بحث دیتابیس بریزید و برای اینکه نخوایید کوئری بزنید با این لیست کار کنید.

البته اگه منظورتونو درست فهمیده باشم.

سلام جناب آرتا عزیز،

Score همون امتیاز هست.

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

مشکلم نمایش رتبه کاربری است که وارد برنامه میشه...

یعنی میخوام علاوه بر اینکه به هر کاربر 100 نفر برتر رو نمایش میدم ، رتبه خودش رو هم در بین 5000 کاربر نمایش بدم.

میتونم بجای 100 نفر برتر 5000 نفر رو در لیست قرار بدم و با یه حلقه از 1 تا 5000 بگردم تا به کاربر برسم و رتبه اش رو بدست بیارم... اما بهینه نیست و سعی دارم با دستورات خود sql در سی شارپ به رتبه کاربر برسم تا هم منابع کمتر مصرف بشن و هم سرعت بالا بره.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب پس شما باید از index  در دیتابیس استفاده کنید

ببنید در حالت عادی شما بخوایید دیتا رو Select  کنید، تمامی رکورد ها یکی یکی چک میشه تا برسه به رکورد مد نظرتون.

اما با استفاده از ایندکس دقیقا میره به همون دیتای مورد نظر.

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

یک نگاهی اجمالی به index  بندازید در پایگاه داده.

حقیقتا خودم نیازم نبوده استفاده کنم، کلا با دیتای زیاد و سنگینی بر نخوردم توی اپ که ازش استفاده کنم.

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/04/26, 02:54:24، مجید آرتا گفته است :

خب پس شما باید از index  در دیتابیس استفاده کنید

ببنید در حالت عادی شما بخوایید دیتا رو Select  کنید، تمامی رکورد ها یکی یکی چک میشه تا برسه به رکورد مد نظرتون.

اما با استفاده از ایندکس دقیقا میره به همون دیتای مورد نظر.

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

یک نگاهی اجمالی به index  بندازید در پایگاه داده.

حقیقتا خودم نیازم نبوده استفاده کنم، کلا با دیتای زیاد و سنگینی بر نخوردم توی اپ که ازش استفاده کنم.

 

ممنون بابت راهنماییتون

حدودا دیوانه شدم بسکه جستجو و کدها رو تست کردم و به هدفم نرسیدم...

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

کار ساده ای هست ، اما عجیبه اغلبا احساس میکنن کدهایی که گذاشتن درسته اما مشکل داره و جواب نمیده !

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...