代码之家  ›  专栏  ›  技术社区  ›  Mike

行过滤器式操作

  •  0
  • Mike  · 技术社区  · 16 年前

    'canada%.txt'或'canada*.txt'

    我想我可以重写我的过滤器

    file_name like 'Canada%' and file_name like '%.txt' 
    

    但是有没有更简单的方法来代替确定%的位置并拆分字符串呢?

    2 回复  |  直到 16 年前
        1
  •  1
  •   LesterDove    16 年前

    您可以尝试从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;
    
        2
  •  0
  •   Mike    16 年前

    这是我想出的解决办法

        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();
        }
    
    推荐文章