DataTable.Select("agent=98788")方法在DataTable中执行代理98788时不返回任何行。其他代理正在被过滤,只存在此代理98788的问题。知道为什么没有使用DataTable.Select()方法过滤这个数字吗?
DataTable dt = new DataTable();
dt.Columns.Add("agent", typeof(string));
dt.Columns.Add("shiftdate", typeof(string));
dt.Columns.Add("agentoid", typeof(string));
string sourceAgent = "98788";
string targetAgent = "881757";
dt.Rows.Add("98788","2017-10-27","");
dt.Rows.Add("881757", "2017-10-27", "");
DataRow[] drr1 = dt.Select("agent=" + sourceAgent + "");
DataRow[] drr2 = dt.Select("agent=" + targetAgent + "");drr1是空的,drr2不是空的。我的困惑是为什么drr2不是空的,drr1是空的。为什么"881757“是可过滤的,而"98788”则不是?C# .Select()方法的行为在所有情况下都应该是相同的,但在我的例子中,它的行为似乎有所不同。它是DataTable.Select()中的一个bug吗?
发布于 2017-10-25 11:28:52
您需要使用单引号指定字符串值的筛选器:
DataRow[] drr1 = dt.Select("agent='" + sourceAgent + "'");
DataRow[] drr2 = dt.Select("agent='" + targetAgent + "'");更多关于DataView RowFilter语法:http://www.csharp-examples.net/dataview-rowfilter/的信息
引用:
文字 字符串值被括在单引号‘’中。如果字符串包含单引号',则必须加倍引用。
https://stackoverflow.com/questions/46930580
复制相似问题