我怎样才能通过反思得到一个阶级的财产和价值

时间:2018-03-15 14:57:45

标签: c# reflection

我从this开始!我想避免这个

private IQueryable<Customer> FilterResult(string search, List<Customer> dtResult, List<string> columnFilters)
        {
            IQueryable<Customer> results = dtResult.AsQueryable();

            results = results.Where(p => (search == null || (p.Name != null && p.Name.ToLower().Contains(search.ToLower()) || p.City != null && p.City.ToLower().Contains(search.ToLower())

                && (columnFilters[0] == null || (p.Name != null && p.Name.ToLower().Contains(columnFilters[0].ToLower())))
                && (columnFilters[1] == null || (p.City != null && p.City.ToLower().Contains(columnFilters[1].ToLower())))

                );

            return results;
        }

通过使用反射可能....因为想象我有100个属性它很容易搞砸...所以我尝试这种方式我想使用反射循环所有属性而不是引用每个属性它们(属性)

 public IQueryable<Aangifte> FilterColumn<T>()
            {

                try
                {
                    List<Aangifte> v = AangifteGetData.GetData(StartDate, EndDate);
                    List<Aangifte> v2 = new List<Aangifte>();
                    Aangifte Foo = new Aangifte();
                    List<string> propertEntity = new List<string>();

                    var search = Request.Form.GetValues("search[value]").FirstOrDefault();
                    int count = -1;
                    var results = v.AsQueryable();


                    List<string> columnName = new List<string>();
                    foreach (var prop in Foo.GetType().GetProperties())
                    {
                        var t = "";

                        if (!prop.Name.Contains("FORMAT"))
                        {

                             TVALUE = prop.GetValue(Foo, null);
                             t= prop.Name;
                              propertEntity.Add(t);
                              count++;
                        }
                      if (count < propertEntity.Count())
                        {
                            var newt = t;


                            var Z = Request.Form.GetValues("columns[" + count + "][search][value]").FirstOrDefault();




                            results = results.Where
                                       (


                                       p => (search == null || (t != null && t.ToLower().Contains(search.ToLower())))
                                        && (Request.Form.GetValues("columns[" + count + "][search][value]").FirstOrDefault() == null || (t != null && t.ToLower().Contains(Request.Form.GetValues("columns[" + count + "][search][value]").FirstOrDefault().ToLower())))
                                        );

                        }

                         }
                    return results;
                }
                catch (Exception EX)
                {

                    throw EX;
                }
            }

0 个答案:

没有答案