代码之家  ›  专栏  ›  技术社区  ›  TheSoftwareJedi jac

我应该使用什么设计模式在查询和Linq搜索屏幕的文本框之间创建一个简单的绑定映射?

  •  2
  • TheSoftwareJedi jac  · 技术社区  · 17 年前

    我想创建一种简单的方法,使用不同的选项(如“contains”、“startswith”、“exactmatch”等)将这些文本框“绑定”到底层查询。。。

    SearchBinder<Customer> searchBinder = new SearchBinder<Customer>();
    searchBinder.Bind(txtFirstName, a=>a.FirstName, SearchBinderOptions.StarsWith);
    searchBinder.Bind(txtLastName, a=>a.LastName, SearchBinderOptions.StarsWith);
    searchBinder.Bind(txtTelephone, a=>a.Phone, SearchBinderOptions.Equals);
    searchBinder.SetAction(btnSearch, MyMethodThatHandlesTheExpressionTreeAndFillsTheResults);
    

    然后单击搜索将自动生成表达式树 文本框不是空的

    1 回复  |  直到 17 年前
        1
  •  0
  •   Mark Brackett    17 年前

    Predicate<Customer> searchQuery = c => {
       c.FirstName.StartsWith(txtFirstName.Text)
       && c.LastName.StartsWith(txtLastName.Text)
       && c.Phone == txtTelephone.Text;
    }
    
    void btnSearch_Click(object sender, EventArgs e) {
        return IEnumerable<Customer>.Where(searchQuery);
    }
    

    searchQuery Expression<T> Control.Invoke Invoke 首先。或者,将其发送回UI线程运行。

    表达式<T>

    Query Object Criteria