如何在DataTable.Select()方法中使用定义的字符串常量
本文关键字:定义 常量 字符串 方法 DataTable Select | 更新日期: 2023-09-27 18:16:37
我使用Select
命令从DataTable中选择特定的数据行:
DataRow[] dr;
dr = dataTable.Select("Roll_No = '"+rNo+"'");
我得到了正确的答案,但是如果我想使用为Roll_No定义的常量怎么办?
我已经定义了常量:
public const string ROLL_NUMBER = "Roll_No";
那么DataTable.Select()
的代码是什么呢?
如果我理解正确,只需将变量替换为硬编码值。
var rows = dataTable.Select(string.Format("{0} = '{1}'", ROLL_NUMBER, rNo));
假设Roll_No
是一个数字字段,Select
语句中的那些单括号可能会弄乱您的查询…如果您没有得到预期的结果,请尝试删除它们。
或者,您也可以选择使用LINQ语句:
var rows = dataTable.AsEnumerable()
.Where(x => x.Field<int>(ROLL_NUMBER) == rNo);
更新(从后续评论):
我可以像这样使用吗?var dr = datTable.Select("常量。ROLL_NUMBER = ' ' ' +rNo+ ' ' ' ');这里,常数。ROLL_NUMBER是为卷号定义的常量。
不,因为你的变量名在引号里面,所以你最终会过滤字符串字面量"ROLL_NUMBER",而不是存储在ROLL_NUMBER中的底层列名。
要使用您的代码,您可以这样做:
var dr = dataTable.Select(Constants.ROLL_NUMBER = "'" + rNo + "'");
字符串就是字符串。你已经知道如何连接字符串因为你已经在做了。ROLL_NUMBER
只是另一个字符串,就像你当前代码中的rNo
一样。
也就是说,我倾向于使用String.Format
来表示这种类型的表达式。
dataTable.Select()方法只能传递字符串。Just Like it
public DataRow[] Select(string filterExpression,string sort)
如果你想传递一个常量,你必须把它转换成字符串