Регулярное выражение в заявлении Linq?
Я пишу короткий C# для анализа данного XML-файла. Но 1 из значений тега может изменяться, но всегда включает слова "быстрый запуск" (без учета регистра и пробелов, но должен быть в том же порядке) в предложении where. Я не уверен, как я бы сделал это в SQL-операторе like в C#.
var selected = from cli in doc.Descendants(xmlns+ "Result")
where cli.Element(xmlns + "ResultsLocation").Value == "Assessments-Fast-Startup"
select cli;
2 ответов
предполагая, что вы ищете точную строку-можете ли вы просто использовать String.Contains
?
var selected = from cli in doc.Descendants(xmlns+ "Result")
where cli.Element(xmlns + "ResultsLocation").Value.Contains("Assessments-Fast-Startup")
select cli;
В противном случае, что-то вроде:
var rx = new Regex("fast(.*?)startup", RegexOptions.IgnoreCase);
var selected = from cli in doc.Descendants(xmlns+ "Result")
where rx.IsMatch(cli.Element(xmlns + "ResultsLocation").Value)
select cli;
регулярное выражение для fast[- ]?start[- ]?up
должно работать
где необязательный тире или пробел может быть разделение частей слов
...
where Regex.IsMatch(
cli.Element(xmlns + "ResultsLocation").Value,
"fast[- ]?start[- ]?up",
RegexOptions.IgnoreCase
)
select cli
если вам нужно изменить регулярное выражение попробовать регулярное выражение тестер как http://regexpal.com/
как @DaveBish упомянул, вы можете быть в порядке с