Ejemplo n.º 1
0
        public static IEnumerable <T> Apply <T>(this AplhaNumericFilter keyValuePairs, IEnumerable <T> source, IEnumerable <T> destination, params Func <T, string>[] selectors)
        {
            if (destination == null)
            {
                destination = source.ToList();
            }
            if (keyValuePairs.Any(x => x.Value > 0))
            {
                destination = source.Where(x =>
                {
                    var result = 0;
                    foreach (var selector in selectors)
                    {
                        var prop  = selector(x);
                        var value = keyValuePairs.ContainsKey(prop[0].ToString()) ? keyValuePairs[prop[0].ToString()] : 0;
                        result   += value;
                    }

                    return(result > 0);
                });
                keyValuePairs.Build();
            }
            var allKey = $"{keyValuePairs.BindPrefix}[All]";

            if (keyValuePairs.ContainsKey(allKey) && keyValuePairs[allKey] > 0)
            {
                destination = source.ToList();
            }
            return(destination);
        }