Khi xây dựng các form tìm kiếm với SQL, chúng ta vẫn thường phải xây dựng một chuỗi SQL với nhiều điều kiện trong WHERE, theo kiểu như:
string sql = "select * from Customers"; string where = ""; if (txtCustomerName.Text != "") where += String.Format("CustomerName = {0}", txtCustomerName.Text); if (where != "") sql += " WHERE " + where;
…
MyDataGrid.DataSource = ... <kết quả trả về bởi câu truy vấn>
Trong LINQ, nếu muốn xây dựng một câu truy vấn LINQ kiểu như vậy, bạn có thể sử dụng câu lệnh Where() kết hợp với biểu thức LAMBDA, với ví dụ trên tôi có thể viết như sau:
DataClasses1DataContext dc = new DataClasses1DataContext(); var q = from p in dc.Products select p; if (txtCustomerName.Text != "") q = q.Where(p => p.Name != txtCustomerName.Text); MyDataGrid.DataSource = q;