DataTable.Select(" agent = 98788")方法在代理98788在DataTable中消失时没有返回任何行。其他代理正在过滤,只有这个代理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 + "");
当drr2不为空时,drr1为空。 我的困惑是为什么drr2不为空且drr1为空。为什么" 881757"是可过滤的但是" 98788"不是?对于所有情况,C#.Select()方法的行为应该是相同的,但在我的情况下,它似乎表现不同。 它是DataTable.Select()中的错误吗?
答案 0 :(得分:1)
您需要使用单引号来指定字符串值的过滤器:
DataRow[] drr1 = dt.Select("agent='" + sourceAgent + "'");
DataRow[] drr2 = dt.Select("agent='" + targetAgent + "'");
有关DataView RowFilter语法的更多信息: http://www.csharp-examples.net/dataview-rowfilter/
引用:
<强>字面强>
字符串值包含在单引号''中。如果字符串包含单引号',则引号必须加倍。