我如何使用PredicateBuilder for Linq to XML

时间:2011-11-23 14:14:57

标签: xml linq predicatebuilder

我正在尝试搜索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>

我想知道如何能够看到谓词的内容。方法调用如下。提供的关键字是“安装”,因此它应该找到但不是。

    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;
    }

我很感激有人可以指出我正确的方向。顺便说一句,这是我的第一篇文章,我正在学习如何正确发布它。

0 个答案:

没有答案