PDA

View Full Version : سوال: شرط برای نمایش همه یا موارد فیلتر شده



aliramazani
پنج شنبه 15 مرداد 1394, 13:16 عصر
من یه کوئری شبیه زیر دارم:



string selection;
var Query = from m in db.Movies
where m.key==selection
select new { db.Key, db.gname };


اگر برای selection مقداری وارد شد بر اساس اون جستجو انجام بشه ولی اگر مقداری وارد نشده باشه بر اساس همه موارد موجود جستجو کنه.
اینکه یه شرط بزارم که چک کنه اگر سلکشن خالی بود این کوئری و اگر نبود اون کوئری را اجرا کنه نمیخوام. یه راه حل بهتر.
فرض کنید 200 تا متغیر شبیه هم هست که قراره هر کدوم مقدار بگیره یا نگیره و اینطوری اگر بخواهیم با شرط انجامش بدیم 200*200 حالت شرط باید بنویسیم که منطقی نیست!

Mahmoud.Afrad
پنج شنبه 15 مرداد 1394, 14:09 عصر
اصلا نیاز نیست برای هر حالت ممکن یک شرط بنویسی بلکه بایست به ازای هر مقدار(ستون) اگر توسط کاربر وارد شده بود شرط لازم رو اعمال کنی. بایست از IQueryable استفاده کنی. به ازای هر مورد یک شرط بررسی میکنی و در بدنه شرط، کوئری مرحله قبل رو فیلتر میکنی.
تاپیک زیر رو ببین. (روش اول)
جستجوی پیشرفته در Entity FrameWork (مقایسه جستجو در دیتابیس و فیلتر اطلاعات از قبل لود شده) (http://barnamenevis.org/showthread.php?471215-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AF%D8%B1-Entity-FrameWork-%28%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D9%82%D8%A8%D9%84-%D9%84%D9%88%D8%AF-%D8%B4%D8%AF%D9%87%29)

aliramazani
پنج شنبه 15 مرداد 1394, 14:19 عصر
درسته کاربر راحت میتونه هر چیزی که خواست توی متغیر قرار بده و بر اساس اون فیلتر بشه ولی اگه چیزی قرار نداد یا all را قرار داد باید همه موارد سرچ بشه.

مثلا

string selection=""; var Query = from m in db.Movies
where m.key == selection
select new { db.Key, db.gname };

اینجا برای selection مقدار خالی انتخاب شده و توی این کد در اصل دنبال رکوردی میگرده که مقدارش خالی باشه.. من میخوام وقتی هیچی انتخاب نشه همه را در نظر بگیره

aliramazani
پنج شنبه 15 مرداد 1394, 15:10 عصر
حل شد با استفاده از :

b.oven.Contains(cell_num.Text)

Mahmoud.Afrad
پنج شنبه 15 مرداد 1394, 17:55 عصر
اگر لینکی که گذاشتم رو میدیدی متوجه میشدی زمانی فیلتر انجام میشه که مقدار (مثلا selection) خالی نباشه.