2009-09-25 3 views
1

Я пытаюсь проанализировать строку csv, поместить результаты в коллекцию IList, а затем попытаться найти способ сделать подстановочный знак «содержит» в зависимости от того, что было передано. Прямо сейчас у меня есть следующее:В любом случае, чтобы сделать IList.Contains() более похожим на подстановочный знак?

public static IList<string> DBExclusionList 
    { 
     get 
     { 
      Regex splitRx = new Regex(@",\s*", RegexOptions.Compiled); 
      String list = (string)_asr.GetValue("DBExclusionList",typeof(string)); 
      string[] fields = splitRx.Split(list); 
      return fields; 
     } 
    } 
    if (DBExclusionList.Contains(dbx.Name.ToString())==false) 
    {...} 

Так, если строка я разбор (значение ключа из файла .config) содержит: ключ = значение "DBExclusionList" = "ReportServer, ReportServerTempDB, SQLSentry20, _test"

В DBExclusionList.Contains() работает очень хорошо для точных совпадений по первым 3 пунктам в списке, но я хочу иметь возможность ТАКЖЕ иметь его для частичного соответствия четвертого элемента '_TEST'

есть ли способ сделать это? Я, конечно, мог бы жестко запрограммировать его, чтобы всегда исключать все, но я бы предпочел.

спасибо.

+0

с использованием сервера отчетов, то есть мои симпатии –

+0

хорошо ... (но верно) –

ответ

3

Использование Linq:

if (DBExclusionList.Any(s => s.Contains(dbx.Name.ToString()))) 
+0

я пошел с этим, так как .Any возвращает логическое значение. благодаря :) –

2

Поскольку вы используете .NET 3.5, можно использовать метод Where() LINQ расширения:

DBExclusionList.Where(item => item.Contains(dbx.Name.ToString())) 
0

Не использовать регулярное выражение для разделения. Используйте string.Split() и разделите свой _asr.GetValue("DBExclusionList) чем-то наподобие полуколоней.

Каждый элемент в _asr.GetValue("DBExclusionList) должен быть образцом регулярного выражения, поэтому вы поочередно проверяете каждый.

 Смежные вопросы

  • Нет связанных вопросов^_^