View Full Version : سوال: گروه بندی اطلاعات
aroshanzamir
سه شنبه 19 اسفند 1393, 13:55 عصر
سلام دوستان وقت شما بخیر
فرض کنید من یه کلاسی داشته باشم با نام ProvinceCity . این کلاس یک کلاس خود ارجاع است .
public class ProvinceCity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ProvinceCity ProvinceCity { get; set; }
}
و یک تعداد رکورد رد Db درج شده باشه : مثل :
Id
Name
ProvinceCity
1
فارس
Null
2
شیراز
1
3
فسا
1
4
جهرم
1
5
تهران
Null
خوب من چطوری می تونم یک لیست گروه بندی شده بر اساس استان برگردونم .. مثلا استان فارس با تمام شهرستان ها .. تهران با تمام شهرستان ها
دمتون گرم
mohammadreza.najafipour
چهارشنبه 20 اسفند 1393, 19:39 عصر
سلام دوست عزیز :لبخندساده:
اول از همه یه نکته ای رو بگم، این کلاس یه ایراد داره. نام virtual ProvinceCity رو باید تغییر داد و نباید هم نام با کلاس باشه. توی مثال اسمش رو PCity میگم.
اما برای اینکار یه پیشنهاد اینه:
1- با یه کوئری یه لیست از همه ی استان ها که PCity اونها null هستند رو میگیریم.
2- حالا توی یه foreach برای هر استان، با یه کوئری دیگه شهرستان ها رو واکشی می کنیم.یعنی اونهایی که PCity.Id اونها با Id آیتم فعلی یکی هستش.
بسته به نحوه ی نمایش دادن، میتونید از این اطلاعات استفاده کنید.
مطمئنا راه های بهینه تری هم هستش.
Maryamjamli
جمعه 22 اسفند 1393, 08:29 صبح
سلام دوستان استادم كفته برنامه ايي بنويسد اكر يك عدد بعنوان ماه و عدد دوم بعنوان روز از ورودي دريافت كند تعيين كندكه چندمين روز از سال ميباشد بدون استفاده از if & for
ميشه كمكم كنيد چجوري بنويسم
aroshanzamir
جمعه 22 اسفند 1393, 08:50 صبح
سلام دوست عزیز :لبخندساده:
اول از همه یه نکته ای رو بگم، این کلاس یه ایراد داره. نام virtual ProvinceCity رو باید تغییر داد و نباید هم نام با کلاس باشه. توی مثال اسمش رو PCity میگم.
اما برای اینکار یه پیشنهاد اینه:
1- با یه کوئری یه لیست از همه ی استان ها که PCity اونها null هستند رو میگیریم.
2- حالا توی یه foreach برای هر استان، با یه کوئری دیگه شهرستان ها رو واکشی می کنیم.یعنی اونهایی که PCity.Id اونها با Id آیتم فعلی یکی هستش.
بسته به نحوه ی نمایش دادن، میتونید از این اطلاعات استفاده کنید.
مطمئنا راه های بهینه تری هم هستش.
سلام وقت شما بخیر
ممنون از اینکه وقت گذاشتی و پاسخ دادی
1-چزا هم نام نباشه ؟ Entity میاد در جدول مربوطه یک فیلد با نام ProvinceCity_Id از نوع int ایجاد می کنه ..مشکلش چیه ؟و چرا virtual نباشد ؟
2-من هم همین کار را کردم با این کار مشکل دارم چون :
در صورتی که 5 استان داشته باشم در ابتدا باید 1 Select بزنم که نام این 5 تا را بدست بیارم ...
بعد نتیجه را در یک حلقه بزارم و به ازای هر کدام دوباره یک Select به دیتابیس بزنم یعنی باید 6 Select بزنم اگر میشد با گروه بندی انجامش داد که فکر می کنم میشه با یک Select نه 6 Select ...
به نظر شما در این بین راهکار چیه ؟
ممنونم دوست خوبم
mohammadreza.najafipour
شنبه 23 اسفند 1393, 21:26 عصر
خواهش می کنم.
اگه این کد رو کامپایل کنید با خطا مواجه میشه. منظورم این هست که نام متغیرتون رو باید تغییر بدید و با نام کلاستون هم نام نباشه. در غیراینصورت قادر به کامپایل کد نخواهید بود.
با virtual و ... مشکل ندارم :لبخندساده:
راهی که عنوان کردم ساده ترین راه بود و اینکه آیا بشه با یک Select اینکار رو انجام داد یا خیر بنده بی اطلاعم.
البته برای اینکه دسترسی به دیتابیس به حداقل برسه میشه کل جدول را با یک select در حافظه نگه داشت و از حافظه بقیه واکشی ها رو انجام بدیم.
aroshanzamir
شنبه 23 اسفند 1393, 21:39 عصر
سلامی دوباره .. البته من برای این کار را برای منو های برنامه ها انجام میدم وو مشکلی تا الان پیش نیومده ... نمی دونم واقعا شما امتحان کردید که میگید ؟
پس چطور من دارم استفاده می کنم و کد براحتی کامپایل میشه ؟
منظورتون اینه که اول کل اطلاعات را بخونم بعد .... ؟
mohammadreza.najafipour
یک شنبه 24 اسفند 1393, 06:54 صبح
بله امتحان کردم. تا از چیزی مطمئن نباشم مطرح نمی کنم تا خدایی نکرده کسی از دوستان به مشکلی برنخوره.
129440
توی این مورد، شما میخواید کل اطلاعاتی که توی جدول مورد نظرتون رو دارید، با گروه بندی کردن نمایش بدید.
تا اینجای کار کسی روش بهتری رو مطرح نکرده. فرض می کنیم میخوایم از همین روش که چند تا select هست استفاده کنیم.
فرض کنیم یک select برای استان ها بزنیم، بعدش اگه بخوایم برای لیست شهرستان های هر استان یک select دیگه بزنیم، اگه 6 تا استان داشته باشیم میشه به عبارتی 6 تا select بغیر از select اول.
یعنی 6 بار هم دسترسی به دیتابیس. اگه بشه تمام استان های ایران یعنی 31 بار دسترسی به دیتابیس!
به جای این روش، میتونیم بیایم یه select بزنیم و اطلاعات رو کامل توی یه لیست نگه داریم. بعدش برای لیست کردن شهرستان های هر استان، به جای select از دیتابیس، بیایم از این لیست اطلاعات رو بکشیم بیرون. فکر کنم این کار خیلی بهتر باشه.
البته امیدوارم اگه اشتباه می کنم اساتید راه درست رو بگن و اینکه امیدوارم توضیحاتم واضح باشه :لبخندساده:
aroshanzamir
یک شنبه 24 اسفند 1393, 08:38 صبح
آره حرفت درسته واقعا ببخشید من اشتباه میکردم ./ در مورد این Select هم حرفت را قبول دارم این روش که شما گفتید خیلی بهتره ...
بینهایت سپاسگزارم ..
اگر به جواب بهتری هم رسید اطلاع بدهید .. باز هم ممنونم
mohammadreza.najafipour
یک شنبه 24 اسفند 1393, 16:32 عصر
خواهش می کنم دوست عزیز. چشم. خوشحال میشم دوستان هم این مورد رو بررسی کنن. برای خودم هم جالبه راه حل بهتر رو استفاده کنم :لبخندساده:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.