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;
Anh Nam cho em hỏi
Nếu dùng kiễu biểu thức như anh hỏi thì cứ mỗi lần q.where, các điều kiện lại được nối với nhau bằng && (ko thấy type ra nhưng hình như LINQ tự hiểu là &&)
Vậy muốn các điều kiện theo kiểu or thì sao anh ? >”<
Em cảm ơn anh ạ
Hờ hờ, nhất thời chưa nghĩ ra…
Anh ơi, cái kia em hỏi sao rồi ạ ? >”<
a` Chào bạn, cho mình hỏi cái biểu thức lamda…Mình không hiểu lắm.Bạn có thể giải thích nó cho mình hiểu được không bạn.
Thanks
Bài này có giải thích về biểu thức lambda: https://namdh.wordpress.com/2009/07/22/lambda-expression/
@Khách: trường hợp dùng OR thì em phải viết chung trong 1 câu:
q = q.Where((p) => ((p.City != txtCity1.Text) || (txtCity1.Text == “”))
|| ((p.City != txtCity2.Text) || (txtCity2.Text == “”)));
Ví dụ này cho phép em tìm các khách hàng ở thành phố trong ô City1 hay City2.
Biểu thức lambda này hỗ trợ trên C# 3.0 nhưng chưa hỗ trợ với Visual Basic 9.0 hic. Thế thì lập trình thế nào được nhỉ. Mình quen dùng VB
Anh Nam cho em hỏi.
Em có một câu lệnh như sau
…..
dbDataContext db = new dbDataContext(@”C:\NORTHWND.MDF”);
….
Em đã cho dữ liệu ra datagrid được rồi, nhưng em hỏi nếu như câu lệnh trên thì không phải cài SQl server ạ. Hay đó chỉ là một ánh xạ tới cái file đó thôi. Còn khi chạy bắt buộc phải cài SQLserver
Đây là cách em dùng trực tiếp 1 file DB với SQL Server Express, phiên bản này mặc nhiên được cài chung với Visual Studio.
Em đang dùng visual studio team 2008 sp1.
Như vậy là khi chạy phải cần cài SQl server hả anh.
Giả sử ở máy khách cài SQl express, mình chỉ cần copy file northwnd.mdf vào đường dẫn như trên là chạy dc à a.