c#
2016-08-10 66 views 2 likes 
2

有没有办法在以下string变量上使用的Rowfilter属性?使用C#DataView.RowFilter属性的函数的字符串类型的参数

public DataTable FilterByLatestDate(DataTable tbl, string date_asof) 
    { 
     DataView latest = tbl.DefaultView; 
     //latest.RowFilter = "[date]= '" + date_asof + "'" ; // 
     //latest.RowFilter = string.Format("[date]= '{0}'", date_asof); // alternative to messing around with quotes 

DataTable last_tbl = latest.ToTable(); 

return last_tbl; 
} 

PS:我在涉及建议感兴趣.Rowfilter

最佳

+0

格式化或使用C#6.0的语法和只写'$ “[日期] =#{date_asof}#”'。 – Adwaenyth

+0

仍然以'#4.0',但感谢您的信息。 –

回答

0

当您使用一个RowFilter一个日期的引用characted使用的是#符号

latest.RowFilter = "[date]= #" + date_asof + "#" ; 

但是,RowFilter属性接受一个字符串和t如果使用日期作为过滤器,变量应以“MM/dd/yyyy”格式表示。 所以,如果你的字符串date_asof不是这种格式,那么这段代码无法正常工作。

我建议你为DateTime传递给你的函数,并与

public DataTable FilterByLatestDate(DataTable tbl, DateTime date_asof) 
{ 
    DataView latest = tbl.DefaultView; 
    latest.RowFilter = "[date]= #" + date_asof.ToString("MM/dd/yyyy") + "#"; 
    return latest.ToTable(); 
} 
+0

感谢您使用'#'符号的提示。默认情况下,'date_asof'已被格式化为'M/dd/yyyy'。但是我仍然遇到了#的SyntaxErrorException。 –

+0

你能调试这段代码吗?如果是,则在RowFilter行上放置一个断点并检查传递给RowFilter属性的确切文本。我刚刚测试过类似于上面的代码,并且自然地没有语法错误 – Steve

+0

Ex-ante(“”)。事后:'表达式包含无效的日期常量'##'' –

相关问题