コード例 #1
0
        /// <summary>
        /// Define the term with which to compare string properties to
        /// </summary>
        /// <param name="terms">The terms to perform the Levenshtein distance against</param>
        /// <returns></returns>
        public IEnumerable <ILevenshteinDistance <T> > ComparedTo(params string[] terms)
        {
            var levenshteinDistanceExpression = EnumerableExpressionHelper.CalculateLevenshteinDistances(Properties, terms);

            var buildExpression  = EnumerableExpressionHelper.ConstructLevenshteinResult <T>(levenshteinDistanceExpression, FirstParameter);
            var selectExpression = Expression.Lambda <Func <T, LevenshteinDistance <T> > >(buildExpression, FirstParameter).Compile();
            var convertedSource  = Source.Select(selectExpression.Invoke);

            return(new EnumerableLevenshteinCompare <ILevenshteinDistance <T> >(convertedSource));
        }
        /// <summary>
        /// Define the term with which to compare string properties to
        /// </summary>
        /// <param name="stringProperty">The property to perform the Levenshtein distance against</param>
        /// <returns></returns>
        public IEnumerable <ILevenshteinDistance <T> > ComparedTo(Expression <Func <T, string> > stringProperty)
        {
            var sourceProperty = this.Properties[0];
            var targetProperty = this.AlignParameter(stringProperty);

            var levenshteinDistanceExpression = EnumerableExpressionHelper.CalculateLevenshteinDistance(sourceProperty, targetProperty);
            var buildExpression  = EnumerableExpressionHelper.ConstructLevenshteinResult <T>(levenshteinDistanceExpression, this.FirstParameter);
            var selectExpression = Expression.Lambda <Func <T, LevenshteinDistance <T> > >(buildExpression, this.FirstParameter).Compile();
            var convertedSource  = this.Source.Select(selectExpression.Invoke);

            return(new EnumerableLevenshteinCompare <ILevenshteinDistance <T> >(convertedSource));
        }