نمایش نتایج 1 تا 12 از 12

نام تاپیک: مقایسه دو datatable

  1. #1
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    Question مقایسه دو datatable

    سلام وقت بخیر دوستان

    من یه دیتا تیبل دارم که چند سطر اطلاعات داره.(4 ستونه)

    یه دیتا تیبل دیگه هم دارم به همون صورت.(4 ستونه)

    نیاز دارم بررسی کنم که دیتاتیبل 1 محتویاتش توی دیتاتیبل دوم هست یا نه؟
    عکسی برای مثال قرار میدم که محتویات دیتاتیبل یک در دیتاتیبل دوم هست اما به صورت نامرتب.
    ممنون میشم راهنماییم کنید. (در صورت امکان سریعترین روش رو بیان کنید چون ممکنه تعداد دیتاتیل اول 100 ردیف بشه ولی دیتاتیبل دوم هزار ردیف)

  2. #2
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مقایسه دو datatable

    خودم این روشو نوشتم ولی حس میکنم میشه بهتر از اینم نوشت. برا افزایش سرعت . چون برای مثال 100*1000 ببینید چندبار حلقه اجرا میشه.



    bool state = false;
    for (int i = 0; i < dt.Rows.Count; i++)
    {
    for (int j = 0; j < dt2.Rows.Count;j++)
    {
    if (dt.Rows[i]["TajhizatId"].ToString().Equals(dt2.Rows[j]["TajhizatId"].ToString()))
    {
    if (dt.Rows[i]["Nobat"].ToString().Equals(dt2.Rows[j]["Nobat"].ToString()))
    {
    if (dt.Rows[i]["BarCode"].ToString().Equals(dt2.Rows[j]["BarCode"].ToString()))
    {
    state = true;
    }
    else
    {
    state = false;
    }
    }


    }
    }
    }
    MessageBox.Show(state.ToString());


  3. #3

    نقل قول: مقایسه دو datatable

    چه ستونی مقادیر یکتا داره؟

  4. #4
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    چه ستونی مقادیر یکتا داره؟
    تو این جدول فقط ستون نوبت تغییر میکنه. بقیه ستونها ثابتا" - یعنی ستون کد بررسی و کد تجهیز و بارکد باهم یکتا هستن.


    در کل هدفی که دارم اینه که یکبار یک کاری انجام شده که جدول یک تولید شده و ثبت شده. کاربر میاد و دوباره همون کار رو میکنه و جدول یک رو میسازه اما قبل ثبت ما میایم جدول دو رو استخراج میکنیم و اینجا بررسی میکنیم که اگه جدول یک قبلا ثبت شده دیگه اجازه همچین کاری رو به کاربر ندیم.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    تو این جدول فقط ستون نوبت تغییر میکنه. بقیه ستونها ثابتا" - یعنی ستون کد بررسی و کد تجهیز و بارکد باهم یکتا هستن.


    در کل هدفی که دارم اینه که یکبار یک کاری انجام شده که جدول یک تولید شده و ثبت شده. کاربر میاد و دوباره همون کار رو میکنه و جدول یک رو میسازه اما قبل ثبت ما میایم جدول دو رو استخراج میکنیم و اینجا بررسی میکنیم که اگه جدول یک قبلا ثبت شده دیگه اجازه همچین کاری رو به کاربر ندیم.
    سوالی که پیش میاد اینه که
    ممکن هست فقط یکی از ردیفهای جدول یک داخل جدول دوم باشه ، در این صورت نتیجه true میشه.
    اونوقت شما از کجا تشخیص میدی کدوم ردیف بوده و کدام ردیف نبوده؟ یا اینکه مهم نیست یک ردیف یا تمام ردیفهای جدول یک داخل جدول دوم باشند؟

  6. #6
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط 336699 مشاهده تاپیک
    سوالی که پیش میاد اینه که
    ممکن هست فقط یکی از ردیفهای جدول یک داخل جدول دوم باشه ، در این صورت نتیجه true میشه.
    اونوقت شما از کجا تشخیص میدی کدوم ردیف بوده و کدام ردیف نبوده؟ یا اینکه مهم نیست یک ردیف یا تمام ردیفهای جدول یک داخل جدول دوم باشند؟
    نه خب باید عینا اگه تمامی رکوردهای جدول 1 در جدول 2 بود اطلاع بده نه اینکه فقط یکی.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: مقایسه دو datatable

    از این روش استفاده کنید

    نام گذاری جدول ها رو بر اساس شکل بالا انجام دادم (خودتان اصلاح نمایید)

    روش کار به این صورت هست که ابتدا تعداد ردیفهای مشترک در جدول یک و جدول دوم رو بدست می آوریم
    سپس این عدد بدست آمده رو با تعداد ردیفهای جدول یک مقایسه میکنم اگر برابر بود یعنی تمام ردیفهای جدول یک در جدول دوم وجود دارد و نتیجه true میشود
    واگر برابر نبود یعنی فقط بعضی از ردیفهای جدول یک در جدول دوم وجود دارد و نتیجه false میشود

    int EqualRows = (DT1.AsEnumerable().Where(a => DT2.AsEnumerable().Any(b => (a["BarCode"].ToString() == b["BarCode"].ToString())))).Count();

    if (EqualRows == DT1.Rows.Count)
    {
    state = true;
    }
    else
    {
    state = false;
    }


  8. #8
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط 336699 مشاهده تاپیک
    از این روش استفاده کنید

    نام گذاری جدول ها رو بر اساس شکل بالا انجام دادم (خودتان اصلاح نمایید)

    روش کار به این صورت هست که ابتدا تعداد ردیفهای مشترک در جدول یک و جدول دوم رو بدست می آوریم
    سپس این عدد بدست آمده رو با تعداد ردیفهای جدول یک مقایسه میکنم اگر برابر بود یعنی تمام ردیفهای جدول یک در جدول دوم وجود دارد و نتیجه true میشود
    واگر برابر نبود یعنی فقط بعضی از ردیفهای جدول یک در جدول دوم وجود دارد و نتیجه false میشود

    int EqualRows = (DT1.AsEnumerable().Where(a => DT2.AsEnumerable().Any(b => (a["BarCode"].ToString() == b["BarCode"].ToString())))).Count();

    if (EqualRows == DT1.Rows.Count)
    {
    state = true;
    }
    else
    {
    state = false;
    }


    ممنون دوست عزیز. فقط شما فقط چرا اسم یک ستون رو اینجا قید کردید؟! من باید همشونو بنویسم؟ شرمنده اینقدر مبتدیانه میگم من تا حالا لینک کار نکردم.

  9. #9
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    ممنون دوست عزیز. فقط شما فقط چرا اسم یک ستون رو اینجا قید کردید؟! من باید همشونو بنویسم؟ شرمنده اینقدر مبتدیانه میگم من تا حالا لینک کار نکردم.
    وقتی هر سه ستون یکتا هستند
    دیگر نیازی نیست هر سه ستون چک بشه
    یکی از ستون ها چک بشه کافیه.

  10. #10
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط 336699 مشاهده تاپیک
    وقتی هر سه ستون یکتا هستند
    دیگر نیازی نیست هر سه ستون چک بشه
    یکی از ستون ها چک بشه کافیه.
    سه ستون باهم یکتا هستن. مثلا این بارکد میتونه تکراری باشه (
    یعنی ستون کد بررسی و کد تجهیز و بارکد باهم یکتا هستن.
    )
    تو پست شماره 4 هم گفتم.
    آخرین ویرایش به وسیله رامین مرادی : شنبه 05 خرداد 1397 در 14:45 عصر

  11. #11
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    ایران
    پست
    372

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    سه ستون باهم یکتا هستن. مثلا این بارکد میتونه تکراری باشه (
    یعنی ستون کد بررسی و کد تجهیز و بارکد باهم یکتا هستن.
    )
    تو پست شماره 4 هم گفتم.
    الان مشکل کجاست ؟

  12. #12

    نقل قول: مقایسه دو datatable

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    سه ستون باهم یکتا هستن. مثلا این بارکد میتونه تکراری باشه (
    یعنی ستون کد بررسی و کد تجهیز و بارکد باهم یکتا هستن.
    )
    تو پست شماره 4 هم گفتم.
    شرطهای دیگر را با && اضافه کنید.
    با استفاده از متد all میتونید بررسی کنید که همه سطرهای اولی در دومی هم باشند.(در آرایه ها اندیس ستونها را قرار بدید)
                bool state =
    dt1.AsEnumerable().All(dt1Row =>
    dt2.AsEnumerable().Any(dt2Row =>
    dt2Row.ItemArray[0].Equals(dt1Row.ItemArray[0]) &&
    dt2Row.ItemArray[1].Equals(dt1Row.ItemArray[1]) &&
    dt2Row.ItemArray[2].Equals(dt1Row.ItemArray[2])
    )
    );

تاپیک های مشابه

  1. مقایسه دو عکس
    نوشته شده توسط MBeigy در بخش برنامه نویسی مرتبط با بازی و گرافیک در VB6
    پاسخ: 6
    آخرین پست: یک شنبه 28 خرداد 1391, 00:13 صبح
  2. مقایسه دو رشته
    نوشته شده توسط قیوم در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: یک شنبه 15 خرداد 1384, 13:24 عصر
  3. مقایسه دو جدول
    نوشته شده توسط aliasghar در بخش SQL Server
    پاسخ: 1
    آخرین پست: پنج شنبه 22 بهمن 1383, 23:49 عصر
  4. اکتیواکس مقایسه دو صدا
    نوشته شده توسط Doctor Sinohe در بخش کامپوننت ها و ابزارهای کاربردی در VB6
    پاسخ: 7
    آخرین پست: سه شنبه 31 شهریور 1383, 12:06 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •