我有问题。我试图得到包含cols的行。要过滤它们,我想检查两个属性和值,然后,它们应该返回第三列。
例如: XML代码示例:
<?xml version="1.0" encoding="UTF-8"?>
<teryt>
<catalog name="TERC" type="all" date="2015-01-01">
<row>
<col name="WOJ">02</col>
<col name="POW"/>
<col name="GMI"/>
<col name="RODZ"/>
<col name="NAZWA">DOLNOŚLĄSKIE</col>
<col name="NAZDOD">województwo</col>
<col name="STAN_NA">2015-01-01</col>
</row>
<row>
<col name="WOJ">02</col>
<col name="POW">01</col>
<col name="GMI"/>
<col name="RODZ"/>
<col name="NAZWA">bolesławiecki</col>
<col name="NAZDOD">powiat</col>
<col name="STAN_NA">2015-01-01</col>
</row>
<row>
<col name="WOJ">02</col>
<col name="POW">01</col>
<col name="GMI">01</col>
<col name="RODZ">1</col>
<col name="NAZWA">Bolesławiec</col>
<col name="NAZDOD">gmina miejska</col>
<col name="STAN_NA">2015-01-01</col>
</row>
<row>
<col name="WOJ">02</col>
<col name="POW">01</col>
<col name="GMI">02</col>
<col name="RODZ">2</col>
<col name="NAZWA">Bolesławiec</col>
<col name="NAZDOD">gmina wiejska</col>
<col name="STAN_NA">2015-01-01</col>
</row>
<row>
<col name="WOJ">02</col>
<col name="POW">01</col>
<col name="GMI">03</col>
<col name="RODZ">2</col>
<col name="NAZWA">Gromadka</col>
<col name="NAZDOD">gmina wiejska</col>
<col name="STAN_NA">2015-01-01</col>
</row>
现在我尝试使用此代码执行此操作:
public static IEnumerable<XElement> ZwrocNumerWojewodztwa(IEnumerable<XElement> rows, String value1, String value2)
{
return rows
.Where(row => row.Elements("col")
.Any(col =>
col.Attributes("name").Any(attr => attr.Value.Equals("WOJ"))
&& col.Value.Equals(value1) && (col.Attributes("name").Any(attr => attr.Value.Equals("POW"))
&& col.Value.Equals(value2))));
}
当我删除第二个col.Attributes(“name”)。任何(...)时,代码都很棒。我做错了什么?
然后我必须从代码cols“NAZWA”中取出任何提示?
由于
答案 0 :(得分:1)
我认为这就是你想要的:
return rows
.Where(row =>
row.Elements("col").Any(col =>
col.Attributes("name").Any(attr => attr.Value.Equals("WOJ")) &&
col.Value.Equals(value1)) &&
row.Elements("col").Any(col =>
col.Attributes("name").Any(attr => attr.Value.Equals("POW")) &&
col.Value.Equals(value2)));
链接到工作代码:https://dotnetfiddle.net/9aJOCV
答案 1 :(得分:0)
这个问题是你正在寻找具有单个列属性设置为&#34; POW&#34;的行。 AND &#34; WOJ&#34;。将其切换为 OR 。