数据表选择行

时间:2012-03-03 06:50:24

标签: c#

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

最初我插入主键值,剩下的列为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

6 个答案:

答案 0 :(得分:10)

您可以使用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 );

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

您的过滤器中不需要' '

我认为这应该有效:

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

答案 3 :(得分:1)

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

答案 4 :(得分: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;
}

答案 5 :(得分:0)

选择行的列

dt.Rows[0].Field<string>("MyColumnName")