c#datatable合并datatable的某些行和列

c#datatable合并datatable的某些行和列,c#,merge,datatable,C#,Merge,Datatable,datatable中有6列,我想合并列1/rows1和列2/rows2的行和列,但保留其余的。因此,我使用拆分方法分离多余的间距,但有分离的数据我想合并在一起,如“ZPRP 09-0729-01-MAR”变成“ZPRP09-0729-01-MAR”请帮忙:D 示例数据:test1.txt MY01思科ZPRP 08-0729-01-3月08-0729-01 1 EA MY01思科ZPRP 08-0729-01-3月08-0729-01 1 EA MY01思科ZPRP 08-0729-01-3月0

datatable中有6列,我想合并列1/rows1和列2/rows2的行和列,但保留其余的。因此,我使用拆分方法分离多余的间距,但有分离的数据我想合并在一起,如“ZPRP 09-0729-01-MAR”变成“ZPRP09-0729-01-MAR”请帮忙:D

示例数据:test1.txt

MY01思科ZPRP 08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP 08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP 08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP 10-2919-01$110-2919-01 1个EA
MY01思科ZPRP 10-2919-01$110-2919-01 1个EA
MY01

我想要在datatable上显示的结果:

MY01思科ZPRP08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP08-0729-01-3月08-0729-01 1 EA
MY01思科ZPRP10-2919-01$110-2919-01 1个EA
MY01思科ZPRP10-2919-01$110-2919-01 1个EA
MY01

private void Form1\u加载(对象发送方,事件参数e)
{
DataTable dt=新的DataTable();
字符串文件路径=@“C:\Users\2563911\source\repos\test1.txt”;
使用(System.IO.TextReader tr=File.OpenText(filepath))
{
弦线;
而((line=tr.ReadLine())!=null)
{
如果(!line.StartsWith(“-”))
{
if(line.Length<82 | | line.Contains(“MY01”))
{        
string[]items=line.Replace(“MY01”,“”).Split(新字符串[]{”“},StringSplitOptions.RemoveEmptyEntries);
如果(dt.Columns.Count==0)
{
对于(int i=0;i
}
//简单的解决方案。
//在每个空格处拆分字符串。
//返回一个新数组,在该数组中可以根据需要对列进行联接或重新排序。
字符串[]拆分为和组合列(字符串行)
{
变量部分=行分割(“”);
//确保我们的阵列足够长。
//如果字符串不包含这些字段,
//结果中它们将为空。
如果(零件长度<7){
数组。调整大小(参考第7部分);
}
var结果=新[]{
零件[0],零件[1],
//合并这两列
第[2]部分+第[3]部分,
第[4]部分、第[5]部分、第[6]部分
};
返回结果;
}

请提供一些示例数据,并提供您期望的输出示例。您所说的“合并”是什么意思?这可能意味着非常不同的事情
    private void Form1_Load(object sender, EventArgs e)
    {

        DataTable dt = new DataTable();
        string filepath = @"C:\Users\2563911\source\repos\test1.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;
}