0

我想做一些像谷歌在搜索中所做的事情:如果用户写了一些特殊的字符,比如 - 或 *,结果就会被过滤掉。

我现在拥有的:一个Name使用方法过滤对象属性的过滤器Contains,以及两个特殊字符:

  • 只留下不包含键入文本的名称 -

  • 用于搜索我的对象的不同属性(在我的情况下是Units)*

好的,我需要的是结合上述逻辑,并能够先用“-”或“*”过滤,然后能够输入并继续过滤剩余的结果。

这都是关于我认为的逻辑,但它变得越来越复杂,我可能需要一点帮助。

item.View.Filter = delegate(object o)
            {
                //Lógica de filtrado

                if ((item.FilterText.Length > 0) && ((item.FilterText[0] == '*') || (item.FilterText[0] == '-')))
                {
                    //If the first char is *
                    if ((item.FilterText[0] == '*')
                        && (((MyObject)o).Units[0].ToString().ToUpper(CultureInfo.InvariantCulture)
.Contains(item.FilterText.ToUpper(CultureInfo.InvariantCulture).Substring(1))
                            || ((MyObject)o).Units[1].ToString().ToUpper(CultureInfo.InvariantCulture)
.Contains(item.FilterText.ToUpper(CultureInfo.InvariantCulture).Substring(1))))


                {
                        return true;
                    }

                    //If the first char is -
                    if ((item.FilterText[0] == '-')
                        && (!((MyObject)o).Name.ToUpper(CultureInfo.InvariantCulture)
.Contains(item.FilterText.ToUpper(CultureInfo.InvariantCulture).Substring(1))
                            || !((MyObject)o).Name.ToUpper(CultureInfo.InvariantCulture)
.Contains(item.FilterText.ToUpper(CultureInfo.InvariantCulture).Substring(1))))


                 {
                        return true;
                 }

                }
                else
                {
                    if (((MyObject)o).Name.ToUpper(CultureInfo.InvariantCulture)
.Contains(item.FilterText.ToUpper(CultureInfo.InvariantCulture)))
                        {
                            return true;
                        }
                    }
                    return false;
                };
4

0 回答 0