特定のXMLファイルを解析するための短いC#を作成しています。ただし、タグ値の1つは変更できますが、where句には常に「高速起動」という単語が含まれます(大文字と小文字は無視されますが、同じ順序にする必要があります)。 C#のSQLのようなステートメントでこれを行う方法がわかりません。
var selected = from cli in doc.Descendants(xmlns+ "Result")
where cli.Element(xmlns + "ResultsLocation").Value == "Assessments-Fast-Startup"
select cli;
あなたが正確な文字列を探していると仮定します-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
_の正規表現が機能するはずです
オプションのdashまたはspaceでWordの部分を区切ることができます
_...
where Regex.IsMatch(
cli.Element(xmlns + "ResultsLocation").Value,
"fast[- ]?start[- ]?up",
RegexOptions.IgnoreCase
)
select cli
_
正規表現を微調整する必要がある場合は、 http://regexpal.com/ のような正規表現テスターを試してください。
@DaveBishが述べているように、正規表現や.Contains(...)
チェーンの代わりに.ToLower().Contains(...)
テストで問題ないかもしれません(null
チェックも必要になる場合があります)