Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ขอความกรุณาด้วยครับ เรื่องการเปรียบเทียบข้อมูลระหว่าง Datatable



 

ขอความกรุณาด้วยครับ เรื่องการเปรียบเทียบข้อมูลระหว่าง Datatable

 



Topic : 053710



โพสกระทู้ ( 10 )
บทความ ( 0 )



สถานะออฟไลน์




เข้าคำถามเลยนะครับ

ผมมี Datatable อยู่ 2 Table ซึ่งข้อมูล แต่ละ Table มีดังนี้

Table1

1 a
2 b
5 e
7 g
10 j

Table2

1 a
1 a
3 c
9 i
11 k

ผมมีความต้องการ นำ ข้อมูลทั้งสอง Table มาเปรียบเทียบกันแล้วให้ผลลัพท์ดังนี้

num name sum
1 a 2
2 b 0
3 c 1
5 e 0
7 g 0
9 i 1
10 j 0
11 k 1

โดยเงื่อนไขคือ
1. เปรียบเทียบ ค่า Table 1 และ 2 เพื่อนับจำนวน
2. ถ้ามีข้อมูลใหม่ ที่ไม่ซ้ำกัน จะเป็นการเพิ่ม Row ใหม่ และนับจำนวนเป็น 1

กรุณาให้คำแนะนำผมด้วยนะครับ ขอบคุณมากครับ



Tag : .NET, Win (Windows App), VB.NET, C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-26 15:58:57 By : noompd View : 2005 Reply : 3
 

 

No. 1

Guest


เอาใส่ datatable

วนลูป

เช็คเงื่อนไข ข้อ 1 กับ ข้อ 2

*** การบ้าน ใครให้โค้ด ขอให้จู้ดๆ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-27 08:44:46 By : ตังค์แมน
 


 

No. 2



โพสกระทู้ ( 10 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับคุณตังค์แมน

ผมลองทำตามที่คุณตังค์แมนให้แนวทางประกอบกับคำถามอาทิตย์ที่แล้ว

แต่ติดตรงเงื่อนไงนึงครับ คือ

ผมไม่ต้องการให้ Table 1 ถูกนับ ต้องการนับ จำนวน Table 2 ครับ

ถ้ามีแนวทาง ช่วยแนะแนวด้วยครับ

Code (C#)
  DataTable data2 = new DataTable();
            data2.Columns.Add(new DataColumn("num",typeof(string)));
            data2.Columns.Add(new DataColumn("name", typeof(string)));
            data2.Columns.Add(new DataColumn("sum", typeof(int)));

            dt.Merge(dtfcd);
            dt.AcceptChanges();

            DataView view = new DataView();
            view = dt.DefaultView;
            view.Sort = view.Table.Columns[0].ColumnName;
            dt = view.ToTable();

            int data = 0;
            int count = 0;
            int previous = 1;
            string name = "";
            string sum = "";

            foreach (DataRow dr in dt.Rows)
            {
                data = int.Parse(dr[0].ToString());
                name = dr[1].ToString();
                if(previous == null)
                {
                    count = 1;
                }
                else if (previous != data)
                {
                    DataRow drnew = data2.NewRow();
                    drnew["num"] = previous.ToString();
                    drnew["name"] = name;
                    drnew["sum"] = count;
                    data2.Rows.Add(drnew);

                    count = 1;
                }
                else if (previous == data)
                {
                    count++;
                }
                previous = data;


            }
            dataGridView1.DataSource = data2;
            


ส่วนตัวนี้เป็นโค๊ดที่ผมเขียนขึ้น แล้วงง กะโค๊ดตัวเองมาก ช่วยให้คำแนะนำด้วยครับ ขอบคุณมากครับ

Code (C#)
            int i = 0;
            int datafcd = int.Parse(dtfcd.Rows[i][2].ToString());
            string branchca = "";
            string branchcaprevious = "";
            int printca = 0;
            int countfcd = 0;
            int datapreviousfcd = 0;
            int datapreviousfcd2 = 0;



            foreach (DataRow dr2 in data2.Rows)
            {
                datapreviousfcd = int.Parse(dr2[0].ToString());
                datapreviousfcd2 = int.Parse(dr2[0].ToString());
                branchca = dr2[1].ToString();
                printca = int.Parse(dr2[2].ToString());
                if (datapreviousfcd == null)
                {
                    countfcd = 0;
                }
                else if (datapreviousfcd != datafcd)
                {
                    DataRow dr3 = data3.NewRow();
                    dr3["Branch_ID"] = datapreviousfcd.ToString("0##");
                    dr3["Branch_Name"] = branchcaprevious;
                    dr3["Print"] = printca;
                    double sumoutsource = printca * 0.85;
                    string outsource = sumoutsource.ToString("#,##0.00");
                    dr3["Outsource"] = outsource;
                    double sumposttage = printca * 11;
                    string posttage = sumposttage.ToString("#,##0.00");
                    dr3["Posttage"] = posttage;
                    dr3["PrintFCD"] = countfcd;





                    data3.Rows.Add(dr3);
                    countfcd = 1;
                }
                else if (datapreviousfcd == datafcd)
                {
                    countfcd++;
                }
                i++;
                datapreviousfcd = datapreviousfcd2;
                branchcaprevious = branchca;

            }

            dataGridView1.DataSource = data3;



แนวคิดตามโค๊ดที่ผมเขียน คือการเอา ตารางทั้งสองตารางมาเปรียบเทียบกันเลย แต่ผมติดตรงเงื่อนไขด้านต้นที่กล่าวไว้

เขียนยังไง ก้อไม่ออกซักที ช่วยให้คำแนะนำผมทีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-27 15:43:19 By : noompd
 

 

No. 3



โพสกระทู้ ( 10 )
บทความ ( 0 )



สถานะออฟไลน์


โค๊ดล่าสุดครับ
Code (C#)
            DataTable data2 = new DataTable();
            data2.Columns.Add(new DataColumn("num",typeof(string)));
            data2.Columns.Add(new DataColumn("name", typeof(string)));
            data2.Columns.Add(new DataColumn("sum", typeof(int)));
            int i = 0;
            int count = 0;
            int table1 = 1;
            int table2 = 0;
            int current = 0;
            foreach (DataRow dr in dt.Rows )
            {
                current = int.Parse(dr[0].ToString());
                table2 = int.Parse(dtfcd.Rows[i][0].ToString());
                if (table1 == null)
                {
                    count = 1;
                }
                else if (table1 != table2)
                {
                    DataRow drnew = data2.NewRow();
                    drnew["num"] = table1;
                    drnew["sum"] = count;
                    data2.Rows.Add(drnew);

                    count = 0;
                    i++;
                }
                else if (table1 == table2)
                {
                    count++;
                    i++;
                }
                table1 = current;
                i = 0;
            }
            dataGridView1.DataSource = data2;


ปัญหาที่พบตอนนี้ผม ไม่สามารถเขียนโค๊ดให้ เปรียบเทียบระหว่าง datatable ได้ครับ

ใครมีวิธีดี ๆ ช่วยให้คำแนะนำผมด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-28 10:45:04 By : noompd
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความกรุณาด้วยครับ เรื่องการเปรียบเทียบข้อมูลระหว่าง Datatable
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่