public static List <FilterTerm> Join(this IEnumerable <FilterTerm> filterTerms, FilterTermType joinWith)
        {
            var result = filterTerms.SelectMany(filterTerm => new[]
            {
                filterTerm,
                new FilterTerm {
                    FilterTermType = joinWith
                }
            }).ToList();

            if (result.Count > 0)
            {
                result.RemoveAt(result.Count - 1);
            }

            return(result);
        }
        public static List <FilterTerm> Join(this IEnumerable <IEnumerable <FilterTerm> > filterTerms, FilterTermType joinWith)
        {
            var result = new List <FilterTerm>();

            foreach (var filterTermsEnumerable in filterTerms)
            {
                var filterTermsList = filterTermsEnumerable.ToList();

                if (filterTermsList.Any())
                {
                    result.AddRange(filterTermsList);
                    result.Add(new FilterTerm {
                        FilterTermType = joinWith
                    });
                }
            }

            if (result.Count > 0)
            {
                result.RemoveAt(result.Count - 1);
            }

            return(result);
        }