如何使用linq检查列表是否包含动态列表中的项目

时间:2014-03-05 09:16:05

标签: c# linq list dynamic

dynamic List<XElement>我希望获取包含特定attValue的所有值。
要做到这一点,我正在使用它:

return new DynamicXml(from item in _elements
                     where item.Attribute("attName").Value.Contains("attValue")
                     select item);

并且要获取具有多个属性值的属性,我可以使用以下内容:

return new DynamicXml(from item in _elements
                     where item.Attribute("attName").Value.Contains("attValue") ||
                           item.Attribute("attName").Value.Contains("attValue2")
                     select item);

所有以前的代码都能正常工作,现在我正在尝试在第二个代码块中完成确切的事情,但是我需要传递一个包含属性值的列表,而不是添加静态条件来获取值,但它返回错误的数据。 我试着这样做:

  1. 无论属性值是什么,都会返回所有值。

    return new DynamicXml(from item in _elements
                         where attValues.Any(v => v.Contains(item.Value))
                         select item);
    
  2. 这不会返回任何内容:

    return new DynamicXml(from item in _elements
                         where attValues.Contains(item.Value)
                         select item);
    
  3. 注意: attValues是List

    修改

    _ elements包含以下属性:

    <property name="id" xpath="//Atom:entry/Atom:id"  disAtt="" mediaType="txt,pix"  isSingleSelection="true" />
    

    attValues包含mediaTypes"txt""vid"

    我需要获得propertiesmediaTypetxt

    vid的所有dynObject[0].property.mediaType.Value;

    注意:我可以像这样获取mediaType:

    {{1}}

1 个答案:

答案 0 :(得分:1)

向后看,在第一个示例中,您需要一个特定属性,其值包含一个列表,在第二个示例中,您将显示代码,以获取其值包含在您的列表中的任何属性。

假设attValues是要搜索的值列表

return new DynamicXml(from item in _elements
                 where attValues.Any(v => item.Attribute("attName").Value.Contains(v))
                 select item);