本帖最后由 cbicfpl 于 2011-04-21 09:05:19 编辑

解决方案 »

  1.   

    以前用DataTable事,会用  //DataView下过渡条件
    if (this.txtKeyWord.Text != "")
     {
         rowFilter += "DropType.SelectedValue like  '%" + txtKeyWord.Text.Trim() + "%' ;
     }现在我想用Lambda表达式动态过滤
    怎么解决?
      

  2.   

    以前用DataTable事,会用
    C# code
      //DataView下过渡条件
    if (this.txtKeyWord.Text != "")
     {
         rowFilter += DropType.SelectedValue+"like  '%" + txtKeyWord.Text.Trim() + "%' ;
     }
    现在我想用Lambda表达式动态过滤
    怎么解决
      

  3.   

    Lambda表达式就是LINQ吧,这么专业不会看也LINQ也有LIKE方法的
      

  4.   

    Dynamic LINQ http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
    http://www.cnblogs.com/Magicworks/archive/2011/04/10/2011725.html
      

  5.   

    尝试 反射
    http://blog.csdn.net/q107770540/archive/2011/01/13/6133484.aspx
      

  6.   

    解决了
           PropertyInfo prop = typeof(MO_v_Kid_Promotion).GetProperty(this.DropType.SelectedValue);
            //    Cache["KidPromotion"] = List;
            if (this.txtKeyWord.Text != "")
            {
                List = List.Where(Items => { return IsKeyWord(prop.GetValue(Items, null), txtKeyWord.Text); }).ToList();
            }
        public bool IsKeyWord(object a, string b)
        {
            return (a != null) ? a.ToString().Contains(b) : false;
        }
      

  7.   

    你可以下一个 动态linq 的 dynamic.cs 使用这样的扩展方法:
    using System.Linq.Dynamic;var list = new List<TestObj> 

        new TestObj{A="1",B=1},
        new TestObj{A="2",B=1},
        new TestObj{A="3",B=1},
        new TestObj{A="4",B=1},
    };
    var result = list.AsQueryable().Select("A");
    foreach (var val in result)
        Console.WriteLine(val);不过这个result是内部的EnumableQuery<T>对象,你只能拿来foreach取值。
      

  8.   

    学习了另外反射也可以
     string s = "name";
                List<TestModel> lst = new List<TestModel>();
                lst.Add(new TestModel() { name = "张三", id = "001", sex = "男" });
                lst.Add(new TestModel() { name = "李四", id = "002", sex = "女" });
                lst.Add(new TestModel() { name = "王五", id = "003", sex = "男" });
                lst.Add(new TestModel() { name = "赵六", id = "004", sex = "男" });
                PropertyInfo pi = typeof(TestModel).GetProperty(s);
                List<TestModel> lstNew = lst.Where(p => pi.GetValue(p,null).ToString() == "张三").ToList();
      

  9.   

    pi.GetValue(p,null).ToString()这里会有问题,如果为null的时候,会报错,我就是死在他上面
    跑来CSDN问问题