PDA

View Full Version : جستجو بوسیله Linq بر اساس پارامتر های متغییر



sahele_sheni
یک شنبه 18 مرداد 1394, 17:54 عصر
سلام
یه query روی یه آبجکت که IQueryable رو پیاده سازی میکنه میخوام بنویسم به صورتی که 3 پارامتر ورودی رو بگیره و با توجه به اونها اطلاعات رو انتخاب کنه . حالا ممکنه این 3 پارامتر مقدار داشته باشن و یا ممکنه یکی یا دوتا از پارامتر ها مقدار داشته باشن .

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

SabaSabouhi
دوشنبه 19 مرداد 1394, 09:11 صبح
سلام
یه query روی یه آبجکت که IQueryable رو پیاده سازی میکنه میخوام بنویسم به صورتی که 3 پارامتر ورودی رو بگیره و با توجه به اونها اطلاعات رو انتخاب کنه . حالا ممکنه این 3 پارامتر مقدار داشته باشن و یا ممکنه یکی یا دوتا از پارامتر ها مقدار داشته باشن .

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

سلام
خیلی ساده هست، اگه از Extension Methods استفاده کنی این شکلی می‌شه:

var queryable = MyContext.MyTable;
if ( condition1 )
queryable = queryable.Where ( x=> x.Column1 == value1 );
if ( condition2 )
queryable = queryable.Where( x=> x.Column2 == value2 );
if ( condition3 )
queryable = queryable.Where( x=> x.Column3 == value3 );


حتا من مرتب کردن رو هم به همین صورت شرطی انجام می‌دم.

صبا صبوحی

sahele_sheni
دوشنبه 19 مرداد 1394, 10:54 صبح
ممنون از جوابتون ولی ممکنه یک پارامتر رو وارد کنه ، ممکنه 2 تا و یا ممکنه 3 تا رو وارد کنه . در واقع تعداد پارامترها متغیر هست .

SabaSabouhi
دوشنبه 19 مرداد 1394, 11:10 صبح
ممنون از جوابتون ولی ممکنه یک پارامتر رو وارد کنه ، ممکنه 2 تا و یا ممکنه 3 تا رو وارد کنه . در واقع تعداد پارامترها متغیر هست .

سلام
پس پاسخ من رو با دقت نگاه نکردی.
اون condition ها برای همین هستن، مثلاً شرط می‌کنی که اگه TextBox1.Text != string.Empty اون پارامتر رو اضافه کنه.
من تو برنامه‌هام دقیقاً همین کار رو می‌کنم و بسته به این که کاربر صفر یا چند مورد رو پر کنه IQueryable رو تکمیل می‌کنم.

صبا صبوحی