private Task PerformCoreTemplateQueryAsync() { string context = DetermineTemplateContext(); //Perform the core query to search for templates IReadOnlyCollection <IFilteredTemplateInfo> templates = _templateCreator.List ( false, WellKnownSearchFilters.AliasFilter(TemplateName), WellKnownSearchFilters.NameFilter(TemplateName), WellKnownSearchFilters.ClassificationsFilter(TemplateName), WellKnownSearchFilters.LanguageFilter(Language), WellKnownSearchFilters.ContextFilter(context) ); IReadOnlyList <IFilteredTemplateInfo> matchedTemplates = templates.Where(x => x.IsMatch).ToList(); if (matchedTemplates.Count == 0) { matchedTemplates = templates.Where(x => x.IsPartialMatch).ToList(); _forceAmbiguousFlow = true; } else { IReadOnlyList <IFilteredTemplateInfo> matchesWithExactDispositionsInNameFields = matchedTemplates.Where(x => x.MatchDisposition.Any(y => NameFields.Contains(y.Location) && y.Kind == MatchKind.Exact)).ToList(); if (matchesWithExactDispositionsInNameFields.Count > 0) { matchedTemplates = matchesWithExactDispositionsInNameFields; } } _matchedTemplates = matchedTemplates; return(Task.FromResult(true)); }