c#
2016-08-10 106 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(「」)。事後:'表達式包含無效的日期常量'##'' –

相關問題