C# 中的 Linq 查询

本文关键字:查询 Linq 中的 | 更新日期: 2023-09-27 17:57:00

我有一些 xml

<?xml version="1.0" encoding="utf-8" ?>
<carLot>
    <vehicle>
        <vehicleType>Car</vehicleType>
        <color>Red</color>
        <transmissionType>Automatic</transmissionType>
    </vehicle>
    <vehicle>
        <vehicleType>Truck</vehicleType>
        <color>Black</color>
        <transmissionType>Automatic</transmissionType>
    </vehicle>
    <vehicle>
        <vehicleType>Car</vehicleType>
        <color>Blue</color>
        <transmissionType>Manual</transmissionType>
    </vehicle>
</carLot>

我正在尝试抓取 Car 类型的车辆节点。我目前拥有的返回每个车辆节点:

XElement test = XElement.Load(fileName);
var testThing = from thing in test.Descendants("vehicle")
                select thing;

C# 中的 Linq 查询

在不转换为 Lambda 表达式的情况下,您可以执行以下操作:

    XElement test = XElement.Load(new StringReader(xml));
    var testThing = from thing in test.Descendants("vehicle")
                    where thing.Descendants("vehicleType").FirstOrDefault().Value.ToString() == "Car"
                    select thing;

根据 Tim 对问题的评论(使用 Lambda 表达式):

var testThing = test.Descendants("vehicle")
    .Where(c=>(string)c.Element("vehcileType")=="Car")
    .Select(c=>c);