首页 文章

数据表选择行

提问于
浏览
4

我正在使用程序创建的数据表 . 在这个数据表中,我想在一些指定的列中插入值 .

最初我插入主键值,剩下的列为null,当我在主列中查询最近插入值的数据表以更新同一行时,我面临错误 Missing operand after ID operator

谁能告诉我确切的问题 .

我正在尝试以下代码:

dt.Rows.Add(1);
 int insertedValue = 1;
 DataRow[] dr = dt.Select("ID = '" + insertedValue.toString() + "'");

并且在委托主值之后的表结构如下 .

ID    Volumn1    Volumn2    volumn3
--------------------------------------
1

5 回答

  • 1

    您可以简单地格式化选择字符串,如下所示:

    DataRow[] dr = dt.Select(string.Format("ID ='{0}' ", insertedValue));
    

    如果这对您有用,请随时告诉我..谢谢

  • 10

    您的过滤器中不需要 ' ' .

    我认为这应该有效:

    DataRow[] dr = dt.Select("ID = " + insertedValue.toString());
    
  • 3

    顺便说一下,引用System.Data.DataSetExtensions

  • 0

    如果要查找特定行并且数据表有主键,则可以使用Find方法并定位主键,该主键只返回所需的行而不是数组:

    DataRow foundRow = dt.Rows.Find([INSERT SEARCH PARAMETER HERE]);
    if(foundRow != null)
    {
        TO SET A STRING EQUAL TO A FOUND VALUE:
        string str = foundRow["COLUMN NAME / INDEX];
    
        OR IF YOU ARE INSERTING A VALUE YOU CAN USE IT LIKE THIS:
        foundRow["COLUMN NAME / INDEX"] = NEW VALUE;
    }
    
  • 1

    您可以使用LINQ更干净地执行此操作,并使其成为强类型操作 .

    就像是:

    dt.Rows.Add(1);
    int insertedValue = 1;
    var result = 
            dt.AsEnumerable().Where( dr => dr.Field<int>( "ID" ) == insertedValue );
    

    工作范例:

    DataTable dt = new DataTable();
    dt.Columns.Add( "ID", typeof( int ) );
    dt.Rows.Add( 1 );
    
    var result = dt.AsEnumerable().Where( dr => dr.Field<int>( "ID" ) == 1 );
    

相关问题