Zetbox.Client.Models.FilterValueSource.FromProperty C# (CSharp) Method

FromProperty() public static method

public static FromProperty ( IEnumerable properties ) : IFilterValueSource
properties IEnumerable
return IFilterValueSource
        public static IFilterValueSource FromProperty(IEnumerable<Property> properties)
        {
            if (properties == null) throw new ArgumentNullException("properties");
            if (!properties.Any()) throw new ArgumentOutOfRangeException("properties", "At least one property is requiered");

            var result = FilterModel.PREDICATE_PLACEHOLDER;
            var isInList = false;

            foreach (var p in properties)
            {
                if (!isInList)
                {
                    result = result.Replace(FilterModel.PREDICATE_PLACEHOLDER, string.Format(".{0}{1}", p.Name, FilterModel.PREDICATE_PLACEHOLDER));
                }
                else
                {
                    result = result.Replace(FilterModel.PREDICATE_PLACEHOLDER, string.Format(".Any({0}{1})", p.Name, FilterModel.PREDICATE_PLACEHOLDER));
                }

                isInList = p.GetIsList();
            }

            result = result.Trim('.');

            return new FilterValueSource(result, string.Join(".", properties.Reverse().TakeWhile(i => !i.GetIsList()).Reverse().Select(i => i.Name)));
        }

Same methods

FilterValueSource::FromProperty ( System.Property p ) : IFilterValueSource

Usage Example

Example #1
0
        public static FilterModel FromProperty(IFrozenContext frozenCtx, IEnumerable <Property> props)
        {
            var last  = props.Last();
            var label = string.Join(", ", props.Select(i => i.GetLabel()).ToArray());

            if (last is DateTimeProperty)
            {
                return(RangeFilterModel.Create(frozenCtx, label, FilterValueSource.FromProperty(props), typeof(DateTime), null, null));
            }
            else if (last is IntProperty)
            {
                return(RangeFilterModel.Create(frozenCtx, label, FilterValueSource.FromProperty(props), typeof(int), null, null));
            }
            else if (last is DecimalProperty)
            {
                return(RangeFilterModel.Create(frozenCtx, label, FilterValueSource.FromProperty(props), typeof(decimal), null, null));
            }
            else if (last is DoubleProperty)
            {
                return(RangeFilterModel.Create(frozenCtx, label, FilterValueSource.FromProperty(props), typeof(double), null, null));
            }
            else
            {
                return(SingleValueFilterModel.Create(frozenCtx, label, props));
            }
        }
All Usage Examples Of Zetbox.Client.Models.FilterValueSource::FromProperty