Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Làm thế nào để tối ưu khi so sánh 2 datatable trong C# ?

  1. #1
    Ngày gia nhập
    07 2009
    Bài viết
    23

    Wink Làm thế nào để tối ưu khi so sánh 2 datatable trong C# ?

    mình có 2 data table
    ---> A[A1(1,2,3)|A2(Nam,Thanh,Trang)
    ---> B[B1(9,4,6,1,7,3)|B2(Tan,trung,Khanh,Nam,Duy,Trang)
    ---> các mẫu tin trong A1 hay B1 thì không trùng mã.
    Mình sử dụng hàm for để so sánh

    for (int i = 0; i < dtA.Rows.Count; i++)
    {
    foreach (DataRow drB in dtB.Rows)
    {
    if (dtA.Rows[i]["A1"].ToString() == drB["B1"].ToString() )
    { lấy ra A2}
    }}
    ví vụ trên là đơn giản với những dữ liệu ít
    nhưng khi dữ liệu lên rất nhiều (A khoảng 2000 thì B khoảng 4000) thì số lần for sẽ là cấp số nhân (2000.4000). như vậy thì rất mất thời gian.
    Xin ý kiến các bạn.

  2. #2
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    C1, sao bạn không dùng luôn câu lệnh select
    Code:
    select A2 from A,B where B1 = A1
    C2, nếu ko quá hạn hẹp về bộ nhớ thì bạn có thể dùng bảng băm
    Visual C++ Code:
    1. Hashtable B = new Hashtable();
    2. foreach(var row in dtB) B[row["B1"]] = "nice";
    3. foreach(var row in dbA) if( B.Contain(row["A1"])) {//lấy ra A2}

  3. #3
    Ngày gia nhập
    07 2009
    Bài viết
    23

    [QUOTE=pkthanh92;578742]C1, sao bạn không dùng luôn câu lệnh select
    Code:
    select A2 from A,B where B1 = A1
    Bạn ơi! ở đây là 2 datatable kô không phải table nên mình không thể select đc.

  4. #4
    Ngày gia nhập
    03 2009
    Nơi ở
    %appdata%\Temp
    Bài viết
    819

    Sắp xếp rồi tìm kiếm nhị phân. Độ phức tạp là n1logn1 + n2logn2 = nlogn
    Good luck!
    .::[The best way to predict the future is to invent it]::.
    __________________________________________________ _ - Alan Kay -

  5. #5
    Ngày gia nhập
    07 2009
    Bài viết
    23

    Ôi. thật khổ cho mình.
    Tìm kiếm nhị phân mình chưa biết cách. Có ai có ví dụ cụ thể không

  6. #6
    Ngày gia nhập
    04 2012
    Bài viết
    116

    Mặc định Làm thế nào để tối ưu khi so sánh 2 datatable trong C# ?

    Trích dẫn Nguyên bản được gửi bởi lethanhbinhdt Xem bài viết
    Ôi. thật khổ cho mình.
    Tìm kiếm nhị phân mình chưa biết cách. Có ai có ví dụ cụ thể không
    thì cứ tìm một nữa một nữa khi nào đúng thì thôi
    nó giống như trò chơi đoán số của trẻ con ây
    ví dụ bạn đố người bạn đoán một số trong khoảng từ 0-100
    ở đây ví như người bạn của bạn đưa ra số là 50 bạn sẻ nói với họ là lớn hơn hoặc bé hơn số đó
    (trường hợp may mắn số đó là 50 thì không nói làm gì thông báo là có)
    nếu lớn hơn thì tiếp tục tìm tử 51-100 bé thì tìm từ 0-49
    và cứ như thế như thế....
    nói chung thuật toán này dùng tìm dữ liệu lớn chứ dữ liệu bé chả nhanh hơn tìm tuyến tính là bao nhiêu
    (tìm tuyến tính là duyệt từ đâu đến cuối tìm đựoc thì thông báo là có .. )

  7. #7
    Ngày gia nhập
    05 2011
    Bài viết
    9

    Visual C# Code:
    1. var results = from tableA in dtA.AsEnumerable()
    2.               join tableB in dtB.AsEnumerable() on (int)tableA["A1"] equals (int)tableB["B1"]
    3.               select new
    4.               {
    5.                   Name = (int)table1["A2"]
    6.               };
    7. foreach (var item in results)
    8. {
    9.     MessageBox.Show( item.Name );
    10. }

    Hy vọng là dùng được

Các đề tài tương tự

  1. Lỗi Không tìm thấy row trong phương thức Select() của đối tượng dataTable
    Gửi bởi conganhbn91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 10-03-2013, 08:59 AM
  2. Xin hướng dẫn add 1 DataTable ( IList,IEnumable) vào 1 DataTable có sẵn trên DataSet
    Gửi bởi billsang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 09-11-2012, 02:44 PM
  3. Xuất dữ liệu từ DataTable ra Word trong C# như thế nào ?
    Gửi bởi tuan88hy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 09-06-2012, 11:56 PM
  4. ADO.NET Thêm một row mới vào datatable như thế nào
    Gửi bởi tuanvu_n trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 22-11-2011, 09:38 PM
  5. Lọc dữ liệu trong DataTable như thế nào?
    Gửi bởi khakha trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 07-04-2009, 08:44 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn