Exemplo n.º 1
0
        static void Main()
        {
            var listOwners = new List <Owner> {
                new Owner("OneO"), new Owner("TwoO")
            };
            var list = new List <Bitch>
            {
                new Bitch("One", listOwners[0]), new Bitch("One", listOwners[1]), new Bitch("One", listOwners[0]), new Bitch("Two", listOwners[0]), new Bitch("Three", listOwners[1])
            };
            var filter = new TypeFilter($"Name = \"One\"",
                                        new Dictionary <string, TypeFilter> {
                { nameof(Bitch.Owner), new TypeFilter("NameOwner = \"OneO\"") }
            });
            var sortedList = new SortableBindingList <Bitch>(list);
            var mainFilter = new TypeFilter("", new Dictionary <string, TypeFilter> {
                { "Bitch", filter }
            });
            //sortedList.ApplyFilter(filter);
            //var t = (Func<MainBitch, bool>)PropertiesFilter.TypeValidatorExpression(typeof(MainBitch), new Dictionary<string, TypeFilter>{{"Bitch", filter}}).Compile();
            var t = PropertiesFilter.CreateFilter <MainBitch>(mainFilter);
            var p = t(new MainBitch {
                Bitch = list[1]
            });

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new CarsView());
        }
        private void CreateInnerFilter(PropertyValidate propertyInfo, KvP property)
        {
            var filter = new PropertiesFilter(propertyInfo.PropertyType);

            switch (new FilterEditor(filter).ShowDialog())
            {
            case DialogResult.OK:
                property.Value = filter;
                bsFilters.ResetCurrentItem();
                break;

            case DialogResult.Cancel:
                break;

            case DialogResult.Abort:
                property.Value = null;
                bsFilters.ResetCurrentItem();
                break;
            }
        }
Exemplo n.º 3
0
        public static TypeFilter ParsFilter(PropertiesFilter filters)
        {
            var result = new TypeFilter(new Dictionary <string, TypeFilter>(filters.Count));

            foreach (var filter in filters.Values.Where(f => f.Value != null))
            {
                switch (filter.Value)
                {
                case PropertiesFilter innerFilter:
                    result.PropertyFilters.Add(filter.Key.Name, ParsFilter(innerFilter));
                    break;

                case Delegate predecate:
                    result.PropertyFilters.Add(filter.Key.Name, new TypeFilter(predecate));
                    break;

                default:
                    result.PropertyFilters.Add(filter.Key.Name, new TypeFilter(filter.Value.ToString()));
                    break;
                }
            }
            return(result.PropertyFilters.Count > 0 ? result : null);
        }
 public FilterEditor(PropertiesFilter filters)
 {
     _filters = filters ?? throw new ArgumentNullException(nameof(filters));
     InitializeComponent();
 }