XML ファイルを検索し、実行時にキーワードのリストから属性名を比較しようとしています。この投稿で提案されているように、DelegatePredicateBuilder を使用しました: Linq to objects Predicate Builder。
xml ファイルは次のとおりで、name 属性の値を検索する必要があります。
<group name="Install Software">...</group>
結果は常に false を返しました。p を調べると、p が存在しないと表示されます。述語を調べると、次のようになります。
predicate {Method = {Boolean <Or>b__2(System.Xml.Linq.XElement)}} System.Func<System.Xml.Linq.XElement,bool>
述語の内容を表示する方法を知りたいです。メソッドの呼び出しは次のとおりです。提供されたキーワードは「Install」であるため、検出されるはずですが、検出されません。
private IEnumerable<XElement> FindAttribute(XElement doc, String attributeType, String attributeName, List<string> KeywordList)
{
var predicate = DelegatePredicateBuilder.False<XElement>();
foreach (string keyword in keywordList)
{
string temp = keyword;
predicate = predicate.Or(p => (p.Attribute(attributeName).Value).ToString().Contains(temp));
}
var groupResult = doc.DescendantsAndSelf(attributeType)
.Where(predicate);
if (groupResult.Count() == 0)
return null;
else
return groupResult;
}
誰かが私を正しい方向に向けることができれば幸いです。ところで、これは私の最初の投稿であり、正しく投稿する方法を学んでいます。