コード例 #1
0
        private static void IdSearchParameterPredicateProcessing(List <ISearchParameterBase> SearchParametersList, ResourceSearchExpressionTrees <ResCurrentType, ResIndexStringType, ResIndexTokenType, ResIndexUriType, ResIndexReferenceType, ResIndexQuantityType, ResIndexDateTimeType> Search, ExpressionStarter <ResCurrentType> MainPredicate)
        {
            var IdSearchParamerterList = SearchParametersList.Where(x => x.Resource == FHIRAllTypes.Resource.GetLiteral() && x.Name == "_id");

            if (IdSearchParamerterList != null)
            {
                ExpressionStarter <ResCurrentType> NewIdPredicate = null;
                foreach (var IdSearchParameter in IdSearchParamerterList)
                {
                    if (IdSearchParameter is SearchParameterToken SearchTypeToken)
                    {
                        NewIdPredicate = LinqKit.PredicateBuilder.New <ResCurrentType>();
                        foreach (var SearchValue in SearchTypeToken.ValueList)
                        {
                            if (!SearchTypeToken.Modifier.HasValue)
                            {
                                var Expression = Search.MainResourceFhirIdAny(SearchValue.Code);
                                NewIdPredicate = NewIdPredicate.Or(Expression);
                            }
                        }
                    }
                    MainPredicate.Extend <ResCurrentType>(NewIdPredicate, PredicateOperator.And);
                }
                SearchParametersList.RemoveAll(x => x.Resource == FHIRAllTypes.Resource.GetLiteral() && x.Name == "_id");
            }
        }