将两个C#数据表合并为一个 [英] Combining two c# datatables into one

查看:386
本文介绍了将两个C#数据表合并为一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的ASP.NET应用程序中有两个由csv文件填充的数据表,我试图将两者合并为一个。

I have two datatables in my ASP.NET application that are filled from csv files and I am trying to combine the two into one.

此处显示的是界面像这样:

Heres what the interface looks like:

当我单击合并时数据按钮,它应该将test1.csv和test2.csv合并,但工作方式如下:

When I click the 'Merge Data' button it should merge the test1.csv and test2.csv which kind of works but looks like this:

所以我的问题是如何对齐这两个数据表,以便所有数据都在同一行上?

So my question is how do I align these two datatables so that all the data is on the same row?

下面是合并数据按钮的代码:

Below is the code for the Merge Data Button:

        List<string> filepaths = new List<string>();
        List<DataTable> allTables = new List<DataTable>();
        DataTable mergedTables = new DataTable();
        int rowCount = grdFiles.Rows.Count;

        for (int i = 0; i < rowCount; i++)
        {
            string filename = grdFiles.Rows[i].Cells[0].Text;
            filepaths.Add(Server.MapPath("~/Uploads/") + filename);
        }

        foreach(string path in filepaths)
        {
            DataTable dt = new DataTable();
            //converts csv into datatable
            dt = GetDataTableFromCsv(path, true);
            //add table to list of tables
            allTables.Add(dt);
        }

        foreach(DataTable datatable in allTables)
        {   
            //Merge each table in the list to the mergedTables datatable
            mergedTables.Merge(datatable);
        }
        csvUploadResults.DataSource = mergedTables;
        csvUploadResults.DataBind();

在此先感谢您的帮助:)

Thanks in advance for any help :)

推荐答案

如果您的目标只是合并数据而不考虑然后,您可以在第一个数据表中添加另外两个列,并通过循环从第二个表中获取数据,并将它们分配给第一个数据表列。接收数据的方式将是将数据保存在第一个数据表中的方式。

If your objective is just to merge data without considering the relationship between the two data then you can add two more columns into first datatable and through loop get data from second table and assign them to first datatable columns. The way the data is received will be the way data will be saved in first datatable.

public DataTable MergeData(DataTable dtFirst,DataTable dtSecond)
{
    dtFirst.Columns.Add("LocalAuthority");
    dtFirst.Columns.Add("AverageSpeed");
    for (int i = 0; i < dtFirst.Rows.Count; i++)
    {
        dtFirst.Rows[i]["LocalAuthority"] = dtSecond.Rows[i]["LocalAuthority"];
        dtFirst.Rows[i]["AverageSpeed"] = dtSecond.Rows[i]["AverageSpeed"];
    }
    return dtFirst;
}

现在,您需要在以下方法中将datatable作为参数传递。

Now , you need to pass datatable as parameter in following method.

MergeData(allTables.ElementAt(0), allTables.ElementAt(1));

这篇关于将两个C#数据表合并为一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆