我正在尝试搜索 xml 文件并在运行时比较关键字列表中的属性名称。我按照这篇文章的建议使用了 DelegatePredicateBuilder: Linq to objects Predicate Builder。
xml文件如下,需要搜索name属性的值。
<group name="Install Software">...</group>
结果总是返回假。当我检查 p 时,它说 p 不存在。当我检查谓词时,它显示以下内容。
predicate {Method = {Boolean <Or>b__2(System.Xml.Linq.XElement)}} System.Func<System.Xml.Linq.XElement,bool>
我想知道如何能够看到谓词的内容。方法调用如下。提供的关键字是“安装”,所以它应该找到但不是。
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;
}
我很感激有人能指出我正确的方向。顺便说一句,这是我的第一篇文章,我正在学习如何正确发布它。