//public static IEnumerable<IFilterData<T>> AddData<T, TProperty>(this IFilterData<T> src, Expression<Func<T, TProperty>> path, string displayName) //{ // var data = FilterDataFactory<T>.CreateFilterData(path); // data.DisplayName = displayName; // data.IsDisplayed = true; // yield return src; // yield return new FilterData<T>(data); //} //public static IEnumerable<IFilterData<T>> AddData<T, TProperty, TCollection, TValue>(this IFilterData<T> src, Expression<Func<T, TProperty>> path, IEnumerable<TCollection> validValues, Func<TCollection, string> displayFunc, Func<TCollection, TValue> valueFunc) //{ // var data = FilterDataFactory<T>.CreateFilterData(path); // data.IsDisplayed = true; // data.ValidValues = (nameof(ComboContainer.DisplayMember), nameof(ComboContainer.ValueMember), validValues.Select(v => new ComboContainer { DisplayMember = displayFunc(v), ValueMember = valueFunc(v) })); // yield return src; // yield return new FilterData<T>(data); //} public static IEnumerable <IFilterData <T> > AddData <T, TProperty>(this IEnumerable <IFilterData <T> > src, Expression <Func <T, TProperty> > path, string displayName) { var data = FilterDataFactory <T> .CreateFilterData(path); data.DisplayName = displayName; data.IsDisplayed = true; foreach (var item in src) { yield return(item); } yield return(new FilterData <T>(data)); }
public static IEnumerable <IFilterData <T> > AddData <T, TProperty, TCollection, TValue>(this IEnumerable <IFilterData <T> > src, Expression <Func <T, TProperty> > path, Expression <Func <TProperty, TValue> > valuePropFunc, Func <IEnumerable <TCollection> > validValues, Func <TCollection, string> displayFunc, Func <TCollection, TValue> valueFunc) { var data = FilterDataFactory <T> .CreateFilterData(path); var propValue = FilterDataFactory <T> .CreateFilterData(valuePropFunc); data.IsDisplayed = true; data.ValidValues = ("", propValue.PropertyName, () => validValues().Select(v => new ComboContainer { DisplayMember = displayFunc(v), ValueMember = valueFunc(v) })); foreach (var item in src) { yield return(item); } yield return(new FilterData <T>(data)); }