Beispiel #1
0
 public void And()
 {
     Assert.False(_false.And(_false)(null));
     Assert.False(_true.And(_false)(null));
     Assert.False(_false.And(_true)(null));
     Assert.True(_true.And(_true)(null));
 }
Beispiel #2
0
 /// <summary>
 ///     初始化树型查询条件
 /// </summary>
 /// <param name="parameter">查询参数</param>
 public TreeCriteria(ITreeQueryParameter parameter) : base(parameter)
 {
     if (parameter.ParentId != null)
     {
         Predicate = Predicate.And(t => t.ParentId == parameter.ParentId);
     }
 }
Beispiel #3
0
        public static PageCollection GetPages(int pageTypeId, PublishState pageState = PublishState.Published)
        {
            Predicate <PageIndexItem> match = page => page.PageTypeId == pageTypeId;

            match = match.And(PageIndex.GetPublishStatePredicate(pageState));
            return(CurrentIndex.GetPagesByCriteria(match));
        }
Beispiel #4
0
        public override bool UrgentAction(out ActorAction?ret)
        {
            ret = null;
            Predicate <Point>?is_cleared = null;
            var threats_at = threats.ThreatWhere(m_Zone.m); // should have both of these null or non-null; other cases are formal completeness

            if (0 < threats_at.Count)
            {
                is_cleared = pt => !threats_at.Contains(pt);
            }
            var tourism_at = tourism.In(m_Zone.m);

            if (0 < tourism_at.Count)
            {
                is_cleared = is_cleared.And(pt => !tourism_at.Contains(pt));
            }
            else if (null == is_cleared)
            {
                _isExpired = true;
                return(true);
            }
            m_Unverified.RemoveWhere(is_cleared);
            m_Unverified.Remove(m_Actor.Location.Position);
            if (0 >= m_Unverified.Count)
            {
                _isExpired = true;
                return(true);
            }
            if (0 < oai.InterruptLongActivity())
            {
                return(false);
            }
            ret = Pathing();
            return(true);
        }
Beispiel #5
0
        public void FieldComparison()
        {
            var plans          = Enumerable.Empty <string>();
            var planComponents = new List <PlanComponent>
            {
                new PlanComponent {
                    FiscalYear = 2019, PlanID = "P003"
                },
                new PlanComponent {
                    FiscalYear = 2019, PlanID = "P005"
                },
            };

            var fiscalYear = 2019;
            var parameters = new DynamicParameters();

            var predicate = Predicate.And(new[] {
                Predicate.FieldComparison <PlanComponent, int>(m => m.FiscalYear, Operator.Equal, fiscalYear),
                Predicate.FieldComparison <PlanComponent, string>(m => m.PlanID, Operator.In, plans),
            });

            predicate = Predicate.And(new[] {
                Predicate.FieldComparison <PlanComponent, int>(m => m.FiscalYear, Operator.Equal, fiscalYear),
                Predicate.FieldComparison <PlanComponent, string>(m => m.PlanID, Operator.Equal, (string)null),
            });
        }
Beispiel #6
0
        internal void ApplyFilter(BindingListView <Message> view)
        {
            Predicate <Message> predicate = msg => true;

            if (facilities.Any())
            {
                Predicate <Message> predicateFacility = msg => false;
                foreach (FacilityType item in facilities)
                {
                    predicateFacility = predicateFacility.Or(msg => msg.Facility == item);
                }
                predicate = predicate.And(predicateFacility);
            }

            if (severities.Any())
            {
                Predicate <Message> predicateSeverity = msg => false;
                foreach (SeverityType item in severities)
                {
                    predicateSeverity = predicateSeverity.Or(msg => msg.Severity == item);
                }
                predicate = predicate.And(predicateSeverity);
            }

            if (contents.Any())
            {
                Predicate <Message> predicateContents = msg => false;
                foreach (string item in contents)
                {
                    predicateContents = predicateContents.Or(msg => msg.Content.ToLower().Contains(item.ToLower()));
                }
                predicate = predicate.And(predicateContents);
            }

            if (hosts.Any())
            {
                Predicate <Message> predicateHosts = msg => false;
                foreach (string item in hosts)
                {
                    predicateHosts = predicateHosts.Or(msg => msg.Hostname.ToLower().Contains(item.ToLower()));
                }
                predicate = predicate.And(predicateHosts);
            }

            view.ApplyFilter(predicate);
        }
        private static Predicate <PageIndexItem> AddPredicateForPageState(PublishState pageState, Predicate <PageIndexItem> match)
        {
            var publishStatePredicate = GetPublishStatePredicate(pageState);

            match = match.And(publishStatePredicate);

            return(match);
        }
        private Predicate <object> GetManaCostFilter()
        {
            Predicate <object> combinedFilter = x => true;

            if (whiteManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("W") ?? false);
            }
            if (blueManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("U") ?? false);
            }
            if (blackManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("B") ?? false);
            }
            if (redManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("R") ?? false);
            }
            if (greenManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("G") ?? false);
            }
            if (colorlessManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => (x as OLVCardItem).ManaCost?.Contains("C") ?? false);
            }
            if (genericManaButton.Checked)
            {
                combinedFilter = combinedFilter.And(x => ((x as OLVCardItem).ManaCost?.Contains("X") ?? false) ||
                                                    ((x as OLVCardItem).ManaCost?.Any(c => char.IsDigit(c)) ?? false));
            }
            return(combinedFilter);
        }
Beispiel #9
0
        public bool PredicatesAndTest(int value)
        {
            Predicate <int> predicate1 = x => x % 2 == 0;
            Predicate <int> predicate2 = x => x % 3 == 0;
            Predicate <int> predicate3 = predicate1
                                         .And(predicate2);

            return(predicate3(value));
        }
Beispiel #10
0
        public static PredicateConjuction AppendOrCreateConjuction(PredicateBase left, PredicateBase right)
        {
            var conjuction = left as PredicateConjuction;

            if (conjuction != null)
            {
                return(conjuction.Add(right));
            }
            return(Predicate.And(left, right));
        }
Beispiel #11
0
        public static Predicate <T> AndAll <T>(IEnumerable <Predicate <T> > conditions)
        {
            Predicate <T> result = PredicateExtensions.True <T>();

            foreach (Predicate <T> cond in conditions)
            {
                result = result.And <T>(cond);
            }
            return(result);
        }
Beispiel #12
0
 /// <summary>
 /// Whenever any registered OptionControl raises the FilterChanged property changed event, we need to rebuild
 /// the new predicate used to filter the CollectionView.  Since Multiple Columns can have predicate we need to
 /// iterate over all registered OptionControls and get each predicate.
 /// </summary>
 /// <param name="sender">The object which has risen the event</param>
 /// <param name="e">The property which has been changed</param>
 void filter_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "FilterChanged")
     {
         Predicate <object> predicate = null;
         foreach (var filter in Filters)
         {
             if (filter.HasPredicate)
             {
                 if (predicate == null)
                 {
                     predicate = filter.GeneratePredicate();
                 }
                 else
                 {
                     predicate = predicate.And(filter.GeneratePredicate());
                 }
             }
         }
         bool canContinue = true;
         var  args        = new CancelableFilterChangedEventArgs(predicate);
         if (BeforeFilterChanged != null && !IsResetting)
         {
             BeforeFilterChanged(this, args);
             canContinue = !args.Cancel;
         }
         if (canContinue)
         {
             ListCollectionView view = CollectionViewSource.GetDefaultView(this.ItemsSource) as ListCollectionView;
             if (view != null && view.IsEditingItem)
             {
                 view.CommitEdit();
             }
             if (view != null && view.IsAddingNew)
             {
                 view.CommitNew();
             }
             if (CollectionView != null)
             {
                 CollectionView.Filter = predicate;
             }
             if (AfterFilterChanged != null)
             {
                 AfterFilterChanged(this, new FilterChangedEventArgs(predicate));
             }
         }
         else
         {
             IsResetting = true;
             var ctrl = sender as ColumnFilterControl;
             ctrl.ResetControl();
             IsResetting = false;
         }
     }
 }
Beispiel #13
0
    /// <summary>
    ///   Combines several predicates-утверждения using logical AND operator
    /// </summary>
    /// <param name="predicates">array of predicates</param>
    /// <returns>
    ///   Returns a new predicate that combine the specified predicated-указанный using AND operator
    /// </returns>
    /// <example>
    ///   var result = CombinePredicates(new Predicate<string>[] {
    ///            x=> !string.IsNullOrEmpty(x),
    ///            x=> x.StartsWith("START"),
    ///            x=> x.EndsWith("END"),
    ///            x=> x.Contains("#")
    ///        })
    ///   should return the predicate that identical to
    ///   x=> (!string.IsNullOrEmpty(x)) && x.StartsWith("START") && x.EndsWith("END") && x.Contains("#")
    ///
    ///   The following example should create predicate that returns true if int value between -10 and 10:
    ///   var result = CombinePredicates(new Predicate<int>[] {
    ///            x=> x>-10,
    ///            x=> x<10
    ///       })
    /// </example>
    public static Predicate <T> CombinePredicates <T>(Predicate <T>[] predicates)
    {
        Predicate <T> result = predicates[0];

        for (int i = 1; i < predicates.Length; i++)
        {
            result = result.And <T>(predicates[i]);
        }
        return(result);
        // TODO : Implement CombinePredicates<T>
        //throw new NotImplementedException();
    }
Beispiel #14
0
 public static IEnumerable <IMember> GetAvailableMembersFor(this IClassType targetClass, AccessLevelModifiers lowestAccessLevel, Predicate <IMember> predicate = null)
 {
     return(targetClass.GetAvailableMembersFor(predicate.And(k =>
     {
         if (k is IScopedDeclaration)
         {
             var scopedMember = (IScopedDeclaration)k;
             return IsAtLeast(scopedMember.AccessLevel, lowestAccessLevel);
         }
         return false;
     })));
 }
Beispiel #15
0
 public void FirePredicationGeneration()
 {
     {
         Predicate <object> predicate = null;
         foreach (var filter in Filters)
         {
             if (filter.HasPredicate)
             {
                 if (predicate == null)
                 {
                     predicate = filter.GeneratePredicate();
                 }
                 else
                 {
                     predicate = predicate.And(filter.GeneratePredicate());
                 }
             }
         }
         bool canContinue = true;
         var  args        = new CancelableFilterChangedEventArgs(predicate);
         if (BeforeFilterChanged != null && !IsResetting)
         {
             BeforeFilterChanged(this, args);
             canContinue = !args.Cancel;
         }
         if (canContinue)
         {
             ListCollectionView view = CollectionViewSource.GetDefaultView(this.ItemsSource) as ListCollectionView;
             if (view != null && view.IsEditingItem)
             {
                 view.CommitEdit();
             }
             if (view != null && view.IsAddingNew)
             {
                 view.CommitNew();
             }
             if (CollectionView != null)
             {
                 CollectionView.Filter = predicate;
             }
             if (AfterFilterChanged != null)
             {
                 AfterFilterChanged(this, new FilterChangedEventArgs(predicate));
             }
         }
         else
         {
             IsResetting = true;
             IsResetting = false;
         }
     }
 }
        public static IQueryable <UnresolvedAclEntry> GetAcl <TDomain>(this ISecurityService <TDomain> service, SecurityTarget target)
        {
            var equalsTarget =
                Predicate.And(
                    BigTuple <Guid> .MemberAccess.Zip(target.Elements,
                                                      (ma, e) => Expr.Create((BigTuple <Guid> o) => ma.Invoke(o) == e.ID))
                    );
            var filter = Expr.Create(( SecurityTargetAcl t ) => equalsTarget.Invoke(t.TargetId)).Expand();

            var acls = service.GetAllAcls(target.Elements.Count());

            return(acls.Where(filter).SelectMany(t => t.Entries));
        }
        private Predicate <object> GetTreeViewFilter()
        {
            Predicate <object> combinedFilter = x => true;

            if (setListView.SelectedIndex != -1)
            {
                var lvItem = setListView.SelectedItem.RowObject as OLVItem;
                do
                {
                    combinedFilter = combinedFilter.And(lvItem.Filter);
                } while ((lvItem = lvItem.Parent) != null);
            }
            return(combinedFilter);
        }
Beispiel #18
0
        //Each time any ColumnFilterHeader values change.  We need to generate the new predicate for the PagedCollectionView
        private void header_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var view = ItemsSource as PagedCollectionView;
            Predicate <object> predicate = null;

            foreach (var filter in FilterHeaders.Where(x => x.HasPredicate))
            {
                predicate = predicate == null
                    ? filter.GeneratePredicate()
                    : predicate.And(filter.GeneratePredicate());
            }
            CommitEdit();
            if (view != null)
            {
                view.Filter = predicate;
            }
        }
Beispiel #19
0
 /// <summary>
 /// 初始化树型实体查询条件
 /// </summary>
 /// <param name="query">树型实体查询条件</param>
 public TreeEntityCriteria(TreeEntityQuery query)
 {
     if (query.Level != null)
     {
         Predicate = t => t.Level == query.Level;
     }
     if (!query.Path.IsEmpty())
     {
         Predicate = Predicate.And(t => t.Path.StartsWith(query.Path));
     }
     if (query.ParentId != null)
     {
         Predicate = Predicate.And(t => t.ParentId == query.ParentId);
     }
     if (query.Enabled != null)
     {
         Predicate = Predicate.And(t => t.Enabled == query.Enabled);
     }
 }
Beispiel #20
0
        private Expression <Func <Patient, bool> > PatientAndFilterQuery()
        {
            switch (SearchCriteria)
            {
            case "Contains":
                Predicate = Predicate.And(m => m.GetType().GetProperty(Field).GetValue(m, null).ToString().Contains(SearchValue));
                break;

            case "EndsWith":
                Predicate = Predicate.And(m => m.GetType().GetProperty(Field).GetValue(m, null).ToString().EndsWith(SearchValue));
                break;

            case "Exact":
                Predicate = Predicate.And(m => m.GetType().GetProperty(Field).GetValue(m, null).ToString() == SearchValue);
                break;

            case "GreaterThan":
                Predicate = Predicate.And(m => DateTime.Parse(m.GetType().GetProperty(Field).GetValue(m, null).ToString()) > DateTime.Parse(SearchValue));
                break;

            case "SmallerThan":
                Predicate = Predicate.And(m => DateTime.Parse(m.GetType().GetProperty(Field).GetValue(m, null).ToString()) < DateTime.Parse(SearchValue));
                break;

            case "StartsWith":
                Predicate = Predicate.And(m => m.GetType().GetProperty(Field).GetValue(m, null).ToString().StartsWith(SearchValue));
                break;

            case "GreaterThan.Distance":
                string searchField = "DistanceFromWythenshawe";
                Predicate = Predicate.And(m => ((double)m.GetType().GetProperty(searchField).GetValue(m, null)) > double.Parse(SearchValue));
                break;

            case "SmallerThan.Distance":
                string searchField2 = "DistanceFromWythenshawe";
                Predicate = Predicate.And(m => ((double)m.GetType().GetProperty(searchField2).GetValue(m, null)) < double.Parse(SearchValue));
                break;
            }
            return(Predicate);
        }
Beispiel #21
0
        public static async Task Run(string[] args)
        {
            // create an Hazelcast client and connect to a server running on localhost
            var options = BuildExampleOptions(args);

            options.Serialization.AddPortableFactory(PortableFactory.FactoryId, new PortableFactory());
            await using var client = HazelcastClientFactory.CreateClient(options);
            await client.StartAsync();

            // Get a Distributed Map called "users"
            await using var users = await client.GetDictionaryAsync <string, User>("users");

            // Add some users to the Distributed Map
            await GenerateUsers(users);

            // Create a Predicate from a String (a SQL like Where clause)
            var sqlQuery = Predicate.Sql("active AND age BETWEEN 18 AND 21)");
            // Creating the same Predicate as above but with a builder
            var criteriaQuery = Predicate.And(
                Predicate.IsEqual("active", true),
                Predicate.IsBetween("age", 18, 21)
                );
            // Get result collections using the two different Predicates
            var result1 = await users.GetValuesAsync(sqlQuery);

            var result2 = await users.GetValuesAsync(criteriaQuery);

            // Print out the results
            Console.WriteLine("Result1:");
            foreach (var result in result1)
            {
                Console.WriteLine(result);
            }
            Console.WriteLine("Result2:");
            foreach (var result in result2)
            {
                Console.WriteLine(result);
            }
        }
        private Predicate RecursivelyRewriteEqualsExpression(Predicate left, Predicate right, EqualsPattern pattern)
        {
            var leftType  = left.ResultType.EdmType as RowType;
            var rightType = right.ResultType.EdmType as RowType;

            if (null != leftType || null != rightType)
            {
                if (null != leftType && null != rightType)
                {
                    Predicate shreddedEquals = null;
                    foreach (var property in leftType.Properties)
                    {
                        var leftElement    = left.Property(property);
                        var rightElement   = right.Property(property);
                        var elementsEquals = RecursivelyRewriteEqualsExpression(leftElement, rightElement, pattern);

                        if (null == shreddedEquals)
                        {
                            shreddedEquals = elementsEquals;
                        }
                        else
                        {
                            shreddedEquals = shreddedEquals.And(elementsEquals);
                        }
                    }
                    return(shreddedEquals);
                }
                else
                {
                    return(PredicateBuilder.False);
                }
            }
            else
            {
                return(ImplementEquality(left, right, pattern));
            }
        }
Beispiel #23
0
        private PSEtwFilter GetConstructedFilter()
        {
            Predicate eventIdPredicate   = null;
            Predicate processIdPredicate = null;

            if (ProcessId != -1)
            {
                processIdPredicate = Filter.ProcessIdIs(ProcessId);
            }

            if (EventId != -1)
            {
                eventIdPredicate = Filter.EventIdIs(EventId);
            }

            Predicate finalPredicate = null;

            if (processIdPredicate != null && eventIdPredicate != null)
            {
                finalPredicate = processIdPredicate.And(eventIdPredicate);
            }
            else if (processIdPredicate != null)
            {
                finalPredicate = processIdPredicate;
            }
            else if (eventIdPredicate != null)
            {
                finalPredicate = eventIdPredicate;
            }

            if (notFilter)
            {
                finalPredicate = Filter.Not(finalPredicate);
            }
            return(new PSEtwFilter(new EventFilter(finalPredicate)));
        }
        public static Predicate <string> BuildExpression(IEnumerable <FilterExpression> filterExpressions)
        {
            Predicate <string> predicate = (delegate
            {
                return(true);
            });

            foreach (FilterExpression expression in filterExpressions)
            {
                string             nextFilter    = expression.Filter;
                Predicate <string> nextPredicate = (o => Regex.Match(o, nextFilter).Success);
                switch (expression.Options)
                {
                case CombineOptions.And:
                    predicate = predicate.And(nextPredicate);
                    break;

                case CombineOptions.Or:
                    predicate = predicate.Or(nextPredicate);
                    break;
                }
            }
            return(predicate);
        }
Beispiel #25
0
        private static Predicate<PageIndexItem> AddPredicateForPageState(PublishState pageState, Predicate<PageIndexItem> match) {
            var publishStatePredicate = GetPublishStatePredicate(pageState);
            match = match.And(publishStatePredicate);

            return match;
        }
Beispiel #26
0
 public Specification <T> And(Expression <Func <T, bool> > predicate)
 {
     return(new Specification <T>(Predicate.And(predicate)));
 }
Beispiel #27
0
 public Specification <T> And(Specification <T> specification)
 {
     return(new Specification <T>(Predicate.And(specification.Predicate)));
 }
Beispiel #28
0
 /// <summary>And</summary>
 public Expression <Func <T, bool> > And(Expression <Func <T, bool> > expr2)
 {
     Guard.NotNull(expr2, nameof(expr2));
     return((IsStarted) ? _predicate = Predicate.And(expr2) : Start(expr2));
 }
Beispiel #29
0
 public static IEnumerable <IClassMethodMember> GetAvailableMethodsFor(this IClassType targetClass, AccessLevelModifiers lowestAccessLevel, Predicate <IClassMethodMember> predicate = null)
 {
     return(targetClass.GetAvailableMethodsFor(predicate.And(k => IsAtLeast(k.AccessLevel, lowestAccessLevel))));
 }
Beispiel #30
0
 /// <summary>And</summary>
 public Expression <Func <T, bool> > And([NotNull] Expression <Func <T, bool> > expr2)
 {
     return((IsStarted) ? _predicate = Predicate.And(expr2) : Start(expr2));
 }
Beispiel #31
0
        private Expression <Func <Patient, bool> > RelatedDataAndFilterQuery()
        {
            var searchKlass = Field.Split(".")[0];
            var searchField = Field.Split(".")[1];

            switch (SearchClass)
            {
            case "PatientDiagnosis":    // pd.GetType().GetProperty(searchField).GetValue(m.PatientDiagnoses, null).ToString() == SearchValue)

                Predicate = Predicate.And(m => m.PatientDiagnoses.
                                          Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == SearchValue).
                                          Select(p => p.PatientId.ToString()).
                                          Contains(m.ID.ToString())
                                          );
                break;

            case "PatientDrug":
                if (Field.Contains("Date"))
                {
                    string dateField = Field.Split(".")[2];
                    switch (SearchCriteria)
                    {
                    case "GreaterThan":
                        Predicate = Predicate.And(m => m.PatientDrugs.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date > Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString())
                                                  );
                        break;

                    case "SmallerThan":
                        Predicate = Predicate.And(m => m.PatientDrugs.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date < Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString())
                                                  );

                        break;

                    case "Exact":
                        Predicate = Predicate.And(m => m.PatientDrugs.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date == Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString())
                                                  );

                        break;
                    }
                }
                else
                {
                    Predicate = Predicate.And(m => m.PatientDrugs.
                                              Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == SearchValue).
                                              Select(p => p.PatientId.ToString()).
                                              Contains(m.ID.ToString())
                                              );
                }

                break;

            case "Patient":
                Predicate = Predicate.And(m => m.PatientStatusId.ToString() == SearchValue);
                break;

            case "PatientRadiologyFinding":

                Predicate = Predicate.And(m => m.PatientRadiologyFindings.
                                          Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == SearchValue).
                                          Select(p => p.PatientId.ToString()).
                                          Contains(m.ID.ToString())
                                          );
                break;

            case "PatientMedicalTrial":

                Predicate = Predicate.And(m => m.MedicalTrials.
                                          Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == SearchValue).
                                          Select(p => p.PatientId.ToString()).
                                          Contains(m.ID.ToString())
                                          );
                break;

            case "PatientSurgery":

                Predicate = Predicate.And(m => m.PatientSurgeries.
                                          Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == SearchValue).
                                          Select(p => p.PatientId.ToString()).
                                          Contains(m.ID.ToString())
                                          );
                break;

            case "PatientAllergicIntoleranceItem":
                var searchId       = SearchValue.Split("_")[0];
                var searchSubKlass = SearchValue.Split("_")[1];

                Predicate = Predicate.And(m => m.PatientAllergicIntoleranceItems.
                                          Where(pd => pd.GetType().GetProperty(searchField).GetValue(pd, null).ToString() == searchId && pd.AllergyIntoleranceItemType == searchSubKlass).
                                          Select(p => p.PatientId.ToString()).
                                          Contains(m.ID.ToString())
                                          );
                break;

            case "PatientNACDates":
                if (Field.Contains("Date"))
                {
                    string dateField = Field.Split(".")[1];
                    switch (SearchCriteria)
                    {
                    case "GreaterThan":

                        Predicate = Predicate.And(m => m.PatientNACDates.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date > Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString()));
                        break;

                    case "SmallerThan":

                        Predicate = Predicate.And(m => m.PatientNACDates.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date < Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString()));


                        break;

                    case "Exact":

                        Predicate = Predicate.And(m => m.PatientNACDates.
                                                  Where(pd => (Convert.ToDateTime(pd.GetType().GetProperty(dateField).GetValue(pd, null)).Date == Convert.ToDateTime(SearchValue).Date)).
                                                  Select(p => p.PatientId.ToString()).
                                                  Contains(m.ID.ToString()));
                        break;
                    }
                }
                break;
            }

            return(Predicate);
        }