Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#输入数组长于使用removeAt后的列数_C#_Datatable - Fatal编程技术网

C#输入数组长于使用removeAt后的列数

C#输入数组长于使用removeAt后的列数,c#,datatable,C#,Datatable,我很清楚,在尝试合并ZRP和08-0729-01-MAR时,从datatable中显式删除列后会导致此问题,因此是否仍有方法在不获得异常的情况下删除列?请帮忙 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable();

我很清楚,在尝试合并ZRP和08-0729-01-MAR时,从datatable中显式删除列后会导致此问题,因此是否仍有方法在不获得异常的情况下删除列?请帮忙

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    { 
        DataTable dt = new DataTable();
        string filepath = @"C:\Users\2563911\source\repos\test.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);

                        try
                        {
                            if (dt.Columns.Count == 0)
                            {
                                // Create the data columns for the data table based on the number of items
                                // on the first line of the file
                                for (int i = 0; i < items.Length; i++)
                                {
                                    dt.Columns.Add(new DataColumn("Column" + i, typeof(string)));

                                }
                             }

                            dt.Rows.Add(items);


                            foreach (DataRow dr in dt.Rows)
                            {
                                dr[2] = dr[1].ToString() + dr[2].ToString();
                            }
                            dt.Columns.RemoveAt(1);                                
                        }

                        catch (System.ArgumentException c)
                        {
                            MessageBox.Show(c.Message);
                            break;
                        }
                    }
                }
            }
            //show it in gridview
            this.DataGridView.DataSource = dt;
        }
    }
}
public Form1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{ 
DataTable dt=新的DataTable();
字符串文件路径=@“C:\Users\2563911\source\repos\test.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
示例文本文件:

MY01思科ZPRP 08-0729-01-3月08-0729-01
MY01思科ZPRP 08-0729-01-3月08-0729-01
MY01思科ZPRP 08-0729-01-3月08-0729-01

MY01 CISCO ZPRP 10-2919-01$1

使用
DataRow row=dt.NewRow()
并填充
。您必须为您关心的列显式设置值,但这肯定会避免此异常。您应该在while循环完成后执行
dt.columns.RemoveAt(1)