我正在使用程序创建的数据表。在这个数据表中,我想在一些指定的列中插入值。
最初我插入主键值,剩下的列为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
答案 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")