linq XElement -查找具有两个不同子值的节点

iklwldmw  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(75)

使用下面的列表:

<People>
    <Continent>Asia</Continent>
    <TimeZone>Hong Kong Standard Time</TimeZone>
    <Person>
        <FirstName>Joe</FirstName>
        <LastName>Stevenson</LastName>
    </Person>
    <Person>
        <FirstName>Joe</FirstName>
        <LastName>Hancock</LastName>
    </Person>
    <Person>
        <FirstName>Kirby</FirstName>
        <LastName>Stevenson</LastName>
    </Person>
</People>

字符串
我想使用一些XElement LINQ来选择包含Joe史蒂文森的名字和姓氏的节点。我在这里尝试了以下代码:

string trimmedFirstName = "Joe";
string trimmedLastName = "Stevenson";
List<XElement> peopleChildren = convertedPayload.Descendants("Person").Where(a => a.Value.Contains(trimmedFirstName)
                && a.Value.Contains(trimmedLastName)).ToList();


但是当我使用上面的代码时,我相信我不会返回任何东西,因为我试图检查单个值。我想通过值进行选择,XElement名称不可知(所以我应该能够检查,例如,如果某人的姓是“Joe”,名是“史蒂文森”,这样我就可以将其更正为原始数据的实际名字和姓氏)。
当我在上面的LINQ中使用OR运算符时,当然会返回太多的元素。
有没有人能给给予建议?

zzlelutf

zzlelutf1#

可以使用Element方法缩小元素名称的范围。

string trimmedFirstName = "Joe";
        string trimmedLastName = "Stevenson";
        List<XElement> peopleChildren = convertedPayload.Descendants("Person")
            .Where(a => a.Element("FirstName").Value.Contains(trimmedFirstName)
                        && a.Element("LastName").Value.Contains(trimmedLastName)).ToList();

字符串

相关问题