我的XML响应结构如下:
<e:Parents>
<d1p1:Parent>
<d1p1:Name>A</d1p1:Name>
<d1p1:Child>a1</d1p1:Child>
<d1p1:Id>101</d1p1:Id>
</d1p1:Parent>
<d1p1:Parent>
<d1p1:Name>A</d1p1:Name>
<d1p1:Child>a2</d1p1:Child>
<d1p1:Id>102</d1p1:Id>
</d1p1:Parent>
<d1p1:Parent>
<d1p1:Name>B</d1p1:Name>
<d1p1:Child>b1</d1p1:Child>
<d1p1:Id>201</d1p1:Id>
</d1p1:Parent>
<d1p1:Parent>
<d1p1:Name>B</d1p1:Name>
<d1p1:Child>b2</d1p1:Child>
<d1p1:Id>202</d1p1:Id>
</d1p1:Parent>
</e:Parents>
现在根据给定的输入(例如A a2)我需要获取id(例如102)。
在我的功能中,我试图使用这样的东西
int getId(string str) // str = A a2
{
int index = str.IndexOf(' ');
string p = str.Substring(0, index); //A
string c = str.Substring(index); //a2
var parent = response.Parents.FirstOrDefault(e => e.Name == p && e.Child == c);
return parent.Id;
}
它给我一个错误,上面写着:
“无法从用法中推断出方法'System.Linq.Enumerables.FirstOrDefault(System.Collections.Generics.IEnumerable,System.Func)'的类型参数。请尝试明确指定参数。”
我需要知道如何根据父母和孩子获得身份证。
答案 0 :(得分:1)
以下Linq表达式应该为您提供所需的值:
XElement xmlSet = XElement.Parse (yourXmlStringHere);
// Will contain the <parent>..</parent> you want
var parentNode =
xmlSet.Elements("d1p1:Parent")
.First(e => e.Elements("d1p1:Name").First().Value == "B"
&& e.Elements("d1p1:Child").First().Value == "a2");
// This will fetch the value - 102 in this case:
var value = parentNode.Elements("d1p1:Id").First().Value;