ورود

View Full Version : حرفه ای: ساخت عبارت داینامیک شرطی برای linq



parsdarab
چهارشنبه 16 دی 1394, 22:39 عصر
با سلام
سناریو اینه که ما سه پارامتر داریم.



شرط ما می باشد که شامل NotNull,Contaion

نوع رشته ای

filterCondition



نام فیلد می باشد مثلا caption,tarikh

نوع رشته ای

filterDataField



مقدار وارد شده توسط کاربر برای جستجو

نوع رشته ای

filterValue








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

Expression<Func<BaseGender, bool>>

کلاس BaseGender فیلدهای خاص خودش را دارد.اما با استفاده از جنریکها چطور میشه کار کرد؟ نمی خام کدها رو به ازای هر کلاس تکرار کنم


Expression<Func<BaseGender, bool>> temp = null;


switch (filterCondition)
{
case "CONTAINS":
temp = CONTAINS(filterDataField, filterValue, temp);
break;
}


تابع


private static Expression<Func<BaseGender, bool>> CONTAINS(string filterDataField, string filterValue, Expression<Func<BaseGender, bool>> temp)
{
switch (filterDataField)
{
case "Caption":
temp = x => x.Caption.ToLower().Contains(filterValue.ToLower() );
break;
case "Description":
temp = x => x.Description.ToLower().Contains(filterValue.ToLow er());
break;
default:
break;
}
return temp;
}