01/10/2018, 15:07

Code tìm kiếm gần đúng trong C#

Mình đang có một thanh tìm kiếm tài khoản

Và mình load lên datagridview dữ liệu:

Mình muốn dùng ô search để để nhập từ khóa tìm kiếm trong cột họ và tên. Và hiển thị kết quả gần đúng

Chẵn viết 17:09 ngày 01/10/2018

Dùng like nhé kiểu như này select * from Food where name like para

Trần Hoàn viết 17:17 ngày 01/10/2018

Đó là code tìm kiếm của SQL rồi. Bạn thớt hỏi code tìm kiếm sau khi DataGridView load dữ liệu cơ

HelloWorld viết 17:17 ngày 01/10/2018

Sao không query xong rồi đổ dữ liệu vào DataGridView nhỉ, đỡ khoản xử lý tìm kiếm bằng c#, mỗi tội query hơi nhiều

Evil Artist viết 17:20 ngày 01/10/2018

Không biết bạn có biết LINQ không.

var FilteredList = From x in ItemList 
                   Where x.Name.StartsWith (f)
                   Select x

var FilteredList = From x in ItemList 
                   Where x.Name.Contains (f)
                   Select x

Văn Dương viết 17:19 ngày 01/10/2018

Đó là linq. Có thể làm việc với SQL và nhiều loại khác nữa như list, array, datatable…
Không nên tìm kiếm trên DataGridView vì nó sẽ chạy nửa ngày mới xong
Nên có 1 bảng dữ liệu riêng và làm việc trong đó. DataGridView chỉ làm nhiệm vụ hiển thị hoặc update.

Hung viết 17:21 ngày 01/10/2018

Bạn tìm hiểu Elastic Search nhé
Một thanh tìm kiếm chung cho tất cả thì nên xài search tool riêng.

Đạt Phạm viết 17:12 ngày 01/10/2018

From x in ItemList

Trong phần này mình muốn thay ItemList bằng một cột trong database thì phải làm thế nào bạn ?

Evil Artist viết 17:15 ngày 01/10/2018

Cách đơn giản nhất
Giả sử bạn có 1 class User được khai báo như sau:

class User{
    public int ID{get;set;}
    public string FullName {get;set;}
    public string NickName {get;set;}
    public string Email {get;set;}
    public ACCESSRIGHT AccessRight {get;set;} // Giả sử nó là 1 enum
}

Ở Form(hoặc Presentation hoặc html file hoặc Xaml) bạn có GridView {Name = GridView1}
Và Form.cs có 1 Object List<User> UserFromDataBase;
UserFromDataBase Get theo cách thông thường bạn làm (Run QueryString, Get From API, Dùng Framework, hoặc DataContext tùy bạn)
Sau đó ở sự kiện SearchTextbox.TextChanged Xử lý SearchTextbox.Text

GridView1.ItemSource = ( From x in UserFromDataBase
                   Where x.FullName.StartsWith ( SearchTextbox.Text )
                   Select x).ToList(); 
//Update GridView Data Source 

Hoặc bạn có thể thm khảo DataBinding nếu chọn cách này.

Ak Nếu DataSource của bạn là dạng DataTable ( Không phải dạng List như trong Ví Dụ)
Bạn tham khảo đoạn mã sau:

var results = From myRow in myDataTable.AsEnumerable()
            Where myRow.Field<string>("FullName").StartsWith(SearchTextbox.Text)
            Select myRow;
GridView1.ItemSource = result; //Nhớ Convert qua kiểu DataTable.
Đỗ Nhiên viết 17:10 ngày 01/10/2018

Viết một cái store produce .Rồi code gọi lên là tốt nhất về hiệu năng mà vẫn đảm bảo bài toán đugns

Bài liên quan
0