c#datatable合并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 EAc#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
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;
}