c数据表合并数据表的某些行和列



数据表中有6列,我想合并columns1/rows1&column2/rows2在一起,但保留其余部分。因此,我使用拆分方法分离了多余的间距,但有一些分离的数据我想合并在一起,比如"ZPRP 09-0729-01-MAR"变成"ZPRP09-0729-02-MAR"请帮助:D

样本数据:test1.txt

MY01 CISCO ZPRP 08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP 08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP 08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP 10-2919-01$1 10-2919-01 1 EA
MY01 CISCO ZPRP10-2919-01$1 10-2919-011 EA
MY01

我想要的结果显示在数据表上:

MY01 CISCO ZPRP08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP08-0729-01-MAR 08-0729-01 1 EA
MY01CISCO ZPRP10-2919-01$1 10-2919-01 1 EA
MY01 CISCO ZPRP 10-2919-01$100 10-2919-011EA
MY01

数据表数据

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        string filepath = @"C:Users2563911sourcerepostest1.txt";
        using (System.IO.TextReader tr = File.OpenText(filepath))
        {
            string line;
            while ((line = tr.ReadLine()) != null)
            {
                if (!line.StartsWith("-"))
                {
                    if (line.Length < 82 || line.Contains("MY01"))
                    {        
                        string[] items = line.Replace("MY01","").Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                        if (dt.Columns.Count == 0 )
                        {
                            for (int i = 0; i < items.Length; i++)
                                dt.Columns.Add(new DataColumn("Column" + i, typeof(string)));                                
                        }
                        dt.Rows.Add(items);
                    }
                }
            }
            //show it in gridview
            this.DataGridView.DataSource = dt;
        }
    }
}

}

// The simple solution.
// Split the string at every space.
// Return a new array where you join or re-order the columns however you want.
string[] SplitIntoAndCombineColumns(string line)
{
    var parts = line.Split(' ');
    // Make sure our array is long enough.
    // If the string does not contain these fields,
    // they will be null in the result.
    if(parts.Length < 7) {
        Array.Resize(ref parts, 7);
    }
    var result = new[] {
        parts[0], parts[1], 
        // Combine these two columns
        parts[2] + parts[3],        
        parts[4], parts[5], parts[6]
    };
    return result;
}

最新更新