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

نام تاپیک: جوین کردن دو دیتاتیبل - datatable

  1. #1

    Question جوین کردن دو دیتاتیبل - datatable

    سلام و درود

    دوستان من یک جدول دارم که درون دیتابیس آنلاین هست و یک جدول که در دیتابیس لوکال و آفلاین روی سیستم وجود داره
    توی هر دو جدول یک ستون مشابه هست میخوام بر اساس اون ستون این دو تا جدول رو بهم وصل کنم و توی دیتاگرید ویو نمایش بدم (البته همه ستون های جدول آنلاین رو میخوام ولی بعضی از ستون های جدول آفلاین لازمم میشه)

    توی اینجور موارد وقتی هر دو جدول توی یک دیتابیس و اون هم آفلاین بود من یک view درست می کردم و کار جوین رو توی دیتابیس انجام میدادم و بقیه ماجرا ... ولی الان گیج شدم
    جستجو کردم متاسفانه مورد مناسبی پیدا نکردم

    به نظرم باید اول هر دو اطلاعات رو برگردونم و هر کدوم رو بریزم توی دیتا تیبل بعد یک کوئری بزنم و این دو تا دیتاتیبل رو با هم جوین کنم درسته؟

    ممنون میشم اگر کسی تکه کدی چیزی داره بگه بتونم ازش الگوبرداری کنم
    متشکرم

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

    نقل قول: جوین کردن دو دیتا تیبل - datatable

    سلام
    کد زیر رو یه بار کامل مرور کنید.
    میتونید با linq هر دو رو جوین کنید و ازش خروجی بگیرید.


    var results = from table1 in dt1.AsEnumerable()
    join table2 in dt2.AsEnumerable() on (int)table1["CustID"] equals (int)table2["CustID"]
    select new
    {
    CustID = (int)table1["CustID"],
    ColX = (int)table1["ColX"],
    ColY = (int)table1["ColY"],
    ColZ = (int)table2["ColZ"]
    };
    foreach (var item in results)
    {
    Console.WriteLine(String.Format("ID = {0}, ColX = {1}, ColY = {2}, ColZ = {3}", item.CustID, item.ColX, item.ColY, item.ColZ));
    }


  3. #3

    نقل قول: جوین کردن دو دیتا تیبل - datatable

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    سلام
    کد زیر رو یه بار کامل مرور کنید.
    میتونید با linq هر دو رو جوین کنید و ازش خروجی بگیرید.


    var results = from table1 in dt1.AsEnumerable()
    join table2 in dt2.AsEnumerable() on (int)table1["CustID"] equals (int)table2["CustID"]
    select new
    {
    CustID = (int)table1["CustID"],
    ColX = (int)table1["ColX"],
    ColY = (int)table1["ColY"],
    ColZ = (int)table2["ColZ"]
    };
    foreach (var item in results)
    {
    Console.WriteLine(String.Format("ID = {0}, ColX = {1}, ColY = {2}, ColZ = {3}", item.CustID, item.ColX, item.ColY, item.ColZ));
    }

    ممنون از جناب مرادی عزیز
    با کمی تغییرات موفق شدم انجامش بدم در اسرع وقت کدش رو میگذارم

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

    مثلا 100 تا رکورد توی دیتاتیبل اولم هست و 20 تا توی دیتاتیبل میخوام این 20 تا مشترک از 100 کم بشه و در نهایت یک دیتاتیبل نهایی داشته باشم با 80 تا رکورد

    توی sql اینطوری کارم راه میفتاد ولی با دیتاتیبل نمیدونم باید چکار کنم

    SELECT * FROM table1 WHERE id NOT IN(SELECT id FROM table2)

    جستجو کردم ولی چیزی نیافتم

  4. #4

    نقل قول: جوین کردن دو دیتاتیبل - datatable

    دوستان و اساتید چیزی به ذهن شون نمی رسه
    خودم این کد رو پیدا کردم ولی نمیدونم چرا کار نمی کنه


    var rows =dtFirst.AsEnumerable().Except(dtSecond.AsEnumerab le(), DataRowComparer.Default);
    DataTable result = null;
    if (rows.Count() != 0)
    result = rows.CopyToDataTable();

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

    نقل قول: جوین کردن دو دیتاتیبل - datatable

    این متد رو پیدا کردم.ورودیش دوتا دیتاتیبله با اسم ستون های کلید اصلی و خروجیش دیتا تیبله. اینو چک کنید


    public DataTable myJoinMethod(DataTable LeftTable, DataTable RightTable,
    String LeftPrimaryColumn, String RightPrimaryColumn)
    {
    //first create the datatable columns
    DataSet mydataSet = new DataSet();
    mydataSet.Tables.Add(" ");
    DataTable myDataTable = mydataSet.Tables[0];


    //add left table columns
    DataColumn[] dcLeftTableColumns = new DataColumn[LeftTable.Columns.Count];
    LeftTable.Columns.CopyTo(dcLeftTableColumns, 0);


    foreach (DataColumn LeftTableColumn in dcLeftTableColumns)
    {
    if (!myDataTable.Columns.Contains(LeftTableColumn.ToS tring()))
    myDataTable.Columns.Add(LeftTableColumn.ToString() );
    }


    //now add right table columns
    DataColumn[] dcRightTableColumns = new DataColumn[RightTable.Columns.Count];
    RightTable.Columns.CopyTo(dcRightTableColumns, 0);

    foreach (DataColumn RightTableColumn in dcRightTableColumns)
    {
    if (!myDataTable.Columns.Contains(RightTableColumn.To String()))
    {
    if (RightTableColumn.ToString() != RightPrimaryColumn)
    myDataTable.Columns.Add(RightTableColumn.ToString( ));
    }
    }

    //add left-table data to mytable
    foreach (DataRow LeftTableDataRows in LeftTable.Rows)
    {
    myDataTable.ImportRow(LeftTableDataRows);
    }


    ArrayList var = new ArrayList(); //this variable holds the id's which have joined


    ArrayList LeftTableIDs = new ArrayList();
    LeftTableIDs = this.DataSetToArrayList(0, LeftTable);


    //import righttable which having not equal Id's with lefttable
    foreach (DataRow rightTableDataRows in RightTable.Rows)
    {
    if (LeftTableIDs.Contains(rightTableDataRows[0]))
    {
    string wherecondition = "[" + myDataTable.Columns[0].ColumnName + "]='"
    + rightTableDataRows[0].ToString() + "'";
    DataRow[] dr = myDataTable.Select(wherecondition);
    int iIndex = myDataTable.Rows.IndexOf(dr[0]);


    foreach (DataColumn dc in RightTable.Columns)
    {
    if (dc.Ordinal != 0)
    myDataTable.Rows[iIndex][dc.ColumnName.ToString().Trim()] =
    rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
    }
    }
    else
    {
    int count = myDataTable.Rows.Count;
    DataRow row = myDataTable.NewRow();
    row[0] = rightTableDataRows[0].ToString();
    myDataTable.Rows.Add(row);
    foreach (DataColumn dc in RightTable.Columns)
    {
    if (dc.Ordinal != 0)
    myDataTable.Rows[count][dc.ColumnName.ToString().Trim()] =
    rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
    }
    }
    }


    return myDataTable;
    }




    منبع : https://www.codeproject.com/Articles...aTables-C-Code

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

  1. سوال: جوین کردن دو جدول که با هم رابطه یک به چند دارن
    نوشته شده توسط peyman_abdollahy در بخش MySQL
    پاسخ: 4
    آخرین پست: چهارشنبه 30 مهر 1393, 08:45 صبح
  2. جوین کردن دو ستون در EF
    نوشته شده توسط javad_r_85 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: دوشنبه 07 مرداد 1392, 10:25 صبح
  3. سوال: جوين كردن دو جدول از نوع متفاوت
    نوشته شده توسط sh2007 در بخش Access
    پاسخ: 1
    آخرین پست: دوشنبه 04 بهمن 1389, 08:27 صبح
  4. آموزش: خطلا در جوین کردن دو جدول
    نوشته شده توسط autosa در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 18 آبان 1389, 21:52 عصر
  5. سوال: Merge کردن دو Datatable
    نوشته شده توسط behiunforgiven در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: یک شنبه 31 مرداد 1389, 23:34 عصر

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

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