Đào Hải Nam

Luôn hạnh phúc vì vẫn còn nhiều ước mơ chưa đạt được

Posts Tagged ‘linq tip

LINQ tip #4: Dùng WHERE

with 10 comments

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;

Written by namdh

14/06/2009 lúc 20:50

Posted in Microsoft .NET

Tagged with , ,

Lấy các dòng ngẫu nhiên (LINQ tip #3)

with 16 comments

Trong SQL Server, để lấy về một tập kết quả ngẫu nhiên, bạn có thể viết:

SELECT TOP 5 * FROM myTable ORDER BY NEWID()

Trong LINQ, nếu muốn lấy về một tập kết quả ngẫu nhiên kiểu như trên, bạn cần tạo một hàm ngẫu nhiên, sau đó thêm nó vào LINQ designer, và dùng hàm đã tạo để sắp xếp. Các bước cụ thể như sau:

Đọc tiếp »

Written by namdh

27/11/2008 lúc 17:59

Posted in Microsoft .NET

Tagged with ,

LINQ tip #2

with one comment

Khi thực hiện gắn nối dữ liệu vào DataSource của một DataGridView, đừng gắn nối trực tiếp đối tượng Table vào DataSource kiểu như sau:

MyDbContext db = new MyDbContext(); myGridView.DataSource = db.Products;

Nếu bạn viết như trên, trong trường hợp bạn thêm dữ liệu vào, dữ liệu trong DataGridView sẽ không tự động hiển thị dòng mới, thay vì vậy hãy dùng hàm GetNewBindingList():


myGridView.DataSource = db.Products.GetNewBindingList(); 

 
Để thêm một dòng mới, bạn có thể viết: ((IBindingList)myGridView.DataSource).Add(new MyData()); 
 

Dòng dữ liệu mới này sẽ được hiển thị trên DataGridView mà bạn không cần phải làm thêm bất kỳ thao tác nào.

Written by namdh

23/11/2008 lúc 09:11

LINQ tip #1

with 4 comments

Để thực hiện một phép kiểm tra kiểu như “SELECT * FROM mytable WHERE col1 IN (1, 2, 3)”, các bạn có thể viết như sau:

int[] departments = {1, 2, 3};
var products = from p in db.Products where departments.Contains(p.dept_no) select p;

Written by namdh

23/11/2008 lúc 09:01

Follow

Get every new post delivered to your Inbox.

Join 37 other followers