【问题标题】:From DataTable1, need to fetch values according to Rows and Columns and assign value to new DataTable从DataTable1中,需要根据Rows和Columns取值并赋值给新的DataTable
【发布时间】:2019-08-21 13:21:49
【问题描述】:

DataTable 中的示例数据 - 1

-----------------------------
  ID  |   ORG  | DES | A | B|
-----------------------------
 101  |  ABC   | KIL | 1 | 5|
_____________________________
 102  |  XYZ   | LOU | 2 | 6|
_____________________________
 103  |  MNO   | HYT | 3 | 7|
_____________________________
 104  |  PQR   | HYT | 4 | 8|

需要转换成如下格式

数据表 - 2

--------------------------------
  ID  |   ORG  | DES | Type | B|
--------------------------------
 101  |  ABC   | KIL | A    | 1|
________________________________
 101  |  ABC   | KIL | B    | 5|
________________________________
 102  |  XYZ   | LOU | A    | 2|
________________________________
 102  |  XYZ   | LOU | B    | 6|
________________________________
 103  |  MNO   | HYT | A    | 3|
________________________________
 103  |  MNO   | HYT | B    | 7|
________________________________
 104  |  PQR   | HYT | A    | 4|
________________________________
 104  |  PQR   | HYT | B    | 8|
________________________________

我想用 C# 来做这个

【问题讨论】:

  • 嗨拉杰库马尔!你已经尝试了什么?请记住,SO 不是来为您编写代码的。它可以帮助您解决已经编写的代码中的问题。
  • 在上面的代码中,A、B 是动态的,有时它会以 A、B、C 或 S、T 或 X、Y 的形式出现

标签: c# .net datatable


【解决方案1】:

尝试以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    public class Program
    {

        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("ORG", typeof(string));
            dt.Columns.Add("DES", typeof(string));
            dt.Columns.Add("A", typeof(int));
            dt.Columns.Add("B", typeof(int));

            dt.Rows.Add(new object[] { 101, "ABC", "KIL", 1, 5 });
            dt.Rows.Add(new object[] { 102, "XYZ", "LOU", 2, 6 });
            dt.Rows.Add(new object[] { 103, "MNO", "HYT", 3, 7 });
            dt.Rows.Add(new object[] { 104, "PQR", "HYT", 4, 8 });

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("ID", typeof(int));
            dt2.Columns.Add("ORG", typeof(string));
            dt2.Columns.Add("DES", typeof(string));
            dt2.Columns.Add("Type", typeof(string));
            dt2.Columns.Add("B", typeof(int));

            foreach (DataRow row in dt.AsEnumerable())
            {
                dt2.Rows.Add(new object[] { row["ID"], row["ORG"], row["DES"], "A", row["A"] });
                dt2.Rows.Add(new object[] { row["ID"], row["ORG"], row["DES"], "B", row["B"] });
            }


        }
    }



}

【讨论】:

  • 在上面的代码中,A、B 是动态的,有时它会以 A、B、C 或 S、T 或 X、Y 的形式出现
  • 您可以使用列号代替列名。
【解决方案2】:

在 DataTable-1 上有一个 for 循环并使用 arrayList 在其中填充数据,然后将其转换回 DataTable,这将产生您所需的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2018-03-03
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多