我正在为我的Oracle SQL请求构建动态过滤器,我希望它们也可以与DataView的RowFilter一起使用。
似乎RowFilter的语法不如SQL丰富,因此它不支持诸如TRANSLATE
,UPPER
,...的功能……我可以将COALESCE
替换为IIF
和UPPER
与dt.CaseSensitive = false
,但实际上并不等效。
问题是:是否有统一的方法为SQL和DataView编写过滤器代码?
DataTable data = new DataTable();
string filters = "upper(playerName) like '%son' AND translate(playerName, 'sen', 'son') = 'hanson'";
using (OracleDataAdapter cmd = new OracleDataAdapter(string.Format(@"SELECT * FROM players
WHERE {0}", filters), connexion))
{
cmd.Fill(data);
}
data.DefaultView.RowFilter = filters; // Will fail with System.Data.EvaluateException