C# 我得到“Id”运算符后缺少操作数”错误,代码中发生了什么?

C# 我得到“Id”运算符后缺少操作数”错误,代码中发生了什么?,c#,C#,我尝试了很多,但我不能,朋友们帮我删除这个代码,如何删除列?这行是错误的 case 2: int intRemoveOption; Console.WriteLine("Select You Want to Delete Entire Column or Seperate:\n"); Console.WriteLine("Select 11. for Remove Entire Column"); Console.WriteLine("Select 12. For

我尝试了很多,但我不能,朋友们帮我删除这个代码,如何删除列?

这行是错误的

case 2:
    int intRemoveOption;
    Console.WriteLine("Select You Want to Delete Entire Column or Seperate:\n");
    Console.WriteLine("Select 11. for Remove Entire Column");
    Console.WriteLine("Select 12. For Remove Single Column\n");

    intRemoveOption = Convert.ToInt32(Console.ReadLine());
    if (intRemoveOption ==11)
    {                         
        Console.WriteLine("Enter Id");                            
        objdatarowcollection = objDataTable.Select("student Id =");
        if (objdatarowcollection != null && objdatarowcollection.Length > 0)
            objdatarowcollection[0].Delete();
        Console.WriteLine("number of rows \n{0}", objDataTable.Rows.Count.ToString());                            
        Console.WriteLine("The Record is Deleted Now");
        datarow = objDataTable.Select();
    foreach (DataRow datarw in datarow)

        foreach (DataColumn datacl in datarw.Table.Columns)

            Console.WriteLine(" {0}", datarw[datacl]);
首先,带空格的字段名需要用方括号括起来。 其次,Select方法需要类似于SQLWHERE语句中使用的语法。因此,在等于之后,需要一个值来过滤行集合

objdatarowcollection = objDataTable.Select("student Id =");
尽管如此,你的问题仍然不清楚。“删除列”是什么意思?您将删除一列,并将其从其所在的数据表中删除

例如:

 objdatarowcollection = objDataTable.Select("[student Id] =" + someValueToSearchFor);
相反,您的代码尝试从Select方法中删除返回的行集合的索引0处的行,因此如果要删除列:

  objDataTable.Columns.Remove("ColumnName");
如果要删除返回集合的索引0处的行 请注意,如果要搜索的值是字符串,则需要在该值周围加引号

objDataTable.Columns.Remove("C2");
+------+-----+------+                              +------+------+
|  c1  |  c2 |  c3  |                              |  c1  |  c3  |
+------+-----+------+                              +------+------+
|   A  |  D  |  G   |    Remove a column named c2  |   A  |  G   |
+------+-----+------+          result is           +------+------+ 
|   B  |  E  |  H   |                              |   B  |  H   |
+------+-----+------+                              +------+------+ 
|   C  |  F  |  I   |                              |   C  |  I   |
+------+-----+------+                              +------+------+ 
请记住,这里的单词remove/delete是虚拟的。
DataTable是内存中的对象。从内存行集合中删除元素或从列集合中删除元素不会删除/删除数据库物理结构中的任何内容。为此,您需要真正的sql查询和数据库引擎ADO.NET提供程序的支持。

然后您需要知道此id并将其添加到SELECT表达式的末尾。没有它,就不可能移除任何东西。顺便说一句,记住这里的单词remove是虚拟的。DataTable是内存中的对象。从内存行集合中删除元素不会删除数据库物理结构中的任何内容。
objdatarowcollection = objDataTable.Select("C3 ='H'");
objdatarowcollection[0].Delete();
+------+-----+------+                              +------+-----+------+
|  c1  |  c2 |  c3  |                              |  c1  |  c2 |  c3  |
+------+-----+------+                              +------+-----+------+
|   A  |  D  |  G   |    Delete a ROW with value   |   A  |  D  |   G  |
+------+-----+------+  'H' in column c3 results in +------+-----+------+
|   B  |  E  |  H   |                              |   C  |  F  |   I  |
+------+-----+------+                              +------+-----+------+
|   C  |  F  |  I   |                              
+------+-----+------+