0
我知道下面是不允許作爲行過濾的RowFilter LIKE操作
「加拿大%.TXT」或「加拿大* .TXT」
,我想我可以重寫我的過濾器
file_name like 'Canada%' and file_name like '%.txt'
應該工作。
但是,有沒有更容易的方法,而不是確定%在哪裏,並拆分字符串?
我知道下面是不允許作爲行過濾的RowFilter LIKE操作
「加拿大%.TXT」或「加拿大* .TXT」
,我想我可以重寫我的過濾器
file_name like 'Canada%' and file_name like '%.txt'
應該工作。
但是,有沒有更容易的方法,而不是確定%在哪裏,並拆分字符串?
我不相信在過濾器表達式中允許CHARINDEX。
你可以嘗試動態地構建C#過濾字符串(很未經檢驗的,但這裏有一個可能的語法):
//split the original string using the wildcard as the delimiter
string[] f = s.Split('%');
//use the resulting array to build the resultstring
string resultstring = 'file_name like "' + f[0] + '%" and file_name like "%' + f[1] + '"'
//view.RowFilter = resultstring;
這裏是我想出了
private string CreateRowFilter(string remoteFilePattern)
{
string[] pattern = remoteFilePattern.Split(new char[] { '*', '%' });
int length = pattern.GetUpperBound(0);
if (length == 0)
{
return String.Format("Name = '{0}'", pattern[0]);
}
StringBuilder fileter = new StringBuilder(
String.Format("Name LIKE '{0}*' ", pattern[0]));
for (int segment = 1; segment < length; segment++)
{
fileter.Append(
String.Format("AND Name LIKE '*{0}*' ", pattern[segment]));
}
if(String.IsNullOrEmpty(pattern[length]) == false)
{
fileter.Append(
String.Format("AND Name LIKE '*{0}' ", pattern[length]));
}
return fileter.ToString();
}
我的解決辦法認爲我忘了在那裏逃避一些引號,但希望你有想法...並希望它適合你... – LesterDove 2010-04-27 18:21:21
這就是我現在正在做的功能分裂*或 %並重建它。我只是想知道是否有一個很酷的linq函數可以應用於表格。 – Mike 2010-04-27 18:37:14