Advertisement
Guest User

Untitled

a guest
Sep 28th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.59 KB | None | 0 0
  1. public Expression<Func<T, bool>> GetPredicate(List<GridFilter> filterClasses)
  2.         {
  3.             var retPredicate = PredicateBuilder.True<T>();
  4.             foreach (GridFilter columnFilterClass in filterClasses.Where(i => ValidateFilter(i) && i != null))
  5.             {
  6.                 GridFilter @class = columnFilterClass;
  7.                 decimal outResult;
  8.                 DateTime outDate;
  9.                 switch (columnFilterClass.Comparer)
  10.                 {
  11.                     case FilterComparisons.EqualTo:
  12.                         if (decimal.TryParse(@class.FilterValue.ToString(), out outResult))
  13.                         {
  14.                             retPredicate = retPredicate.And(p => decimal.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outResult) &&
  15.                             decimal.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) == decimal.Parse(@class.FilterValue.ToString()));
  16.                         }
  17.                         else if (DateTime.TryParse(@class.FilterValue.ToString(), out outDate))
  18.                         {
  19.                             retPredicate = retPredicate.And(p => DateTime.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outDate) &&
  20.                             DateTime.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()).ToShortDateString() == DateTime.Parse(@class.FilterValue.ToString()).ToShortDateString());
  21.                         }
  22.                         else
  23.                         {
  24.                             retPredicate = retPredicate.And(p => ((p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null) == null) ? null : p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) == @class.FilterValue.ToString());
  25.                         }
  26.                         break;
  27.                     case FilterComparisons.NotEqualTo:
  28.                         if (decimal.TryParse(@class.FilterValue.ToString(), out outResult))
  29.                         {
  30.                             retPredicate = retPredicate.And(p => decimal.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outResult) &&
  31.                             decimal.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) != decimal.Parse(@class.FilterValue.ToString()));
  32.                         }
  33.                         else if (DateTime.TryParse(@class.FilterValue.ToString(), out outDate))
  34.                         {
  35.                             retPredicate = retPredicate.And(p => DateTime.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outDate) &&
  36.                             DateTime.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()).ToShortDateString() != DateTime.Parse(@class.FilterValue.ToString()).ToShortDateString());
  37.                         }
  38.                         else
  39.                         {
  40.                             retPredicate = retPredicate.And(p => ((p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null) == null) ? null : p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) != @class.FilterValue.ToString());
  41.                         }
  42.                         break;
  43.                     case FilterComparisons.GreaterThan:
  44.                         if (decimal.TryParse(@class.FilterValue.ToString(), out outResult))
  45.                         {
  46.                             retPredicate = retPredicate.And(p => decimal.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outResult) &&
  47.                                 decimal.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) > decimal.Parse(@class.FilterValue.ToString()));
  48.                         }
  49.                         else
  50.                         {
  51.                             retPredicate = retPredicate.And(p => DateTime.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outDate) &&
  52.                             DateTime.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) > DateTime.Parse(@class.FilterValue.ToString()));
  53.                         }
  54.                         break;
  55.                     case FilterComparisons.LessThan:
  56.                         if (decimal.TryParse(@class.FilterValue.ToString(), out outResult))
  57.                         {
  58.                             retPredicate = retPredicate.And(p => decimal.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outResult) &&
  59.                                 decimal.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) < decimal.Parse(@class.FilterValue.ToString()));
  60.                         }
  61.                         else
  62.                         {
  63.                             retPredicate = retPredicate.And(p => DateTime.TryParse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString(), out outDate) &&
  64.                             DateTime.Parse(p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()) < DateTime.Parse(@class.FilterValue.ToString()));
  65.                         }
  66.                         break;
  67.                     case FilterComparisons.NotEmpty:
  68.                         retPredicate = retPredicate.And(p => !String.IsNullOrEmpty((p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null) == null) ? null : p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()));
  69.                         break;
  70.                     case FilterComparisons.Empty:
  71.                         retPredicate = retPredicate.And(p => String.IsNullOrEmpty((p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null) == null) ? null : p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()));
  72.  
  73.                         break;
  74.                     case FilterComparisons.Containing:
  75.                         retPredicate = retPredicate.And(p => ((p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null) == null) ? "" : p.GetType().GetProperty(@class.FilterMemberName).GetValue(p, null).ToString()).ToUpper().Contains(@class.FilterValue.ToString().ToUpper()));
  76.                         break;
  77.                     default:
  78.                         throw new NotImplementedException("The comparer selected is not yet implemented.");
  79.                 }
  80.             }
  81.             return retPredicate;
  82.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement