LINQ 的更多麻烦。只是希望有人可以帮忙。
这是我正在使用的结构;
<root>
<Level1>
<Level2>
<Level3>
<Car>
<Price PaymentType="Cash">200</Price>
<Price PaymentType="Credit">500</Price>
</Car>
</Level3>
</Level2>
</Level1>
</root>
我正在尝试创建两个 Let 变量来执行此操作;
Let priceCash = ??? // should return 200
Let priceCredit = ??? // should return 500
更复杂的是,并非所有汽车都有信用价格。对于这些我想返回-1。
这是我想出的屠杀代码;
// get all Price elements
let PriceList = CarList.Elements("Price")
// try to get the first Price element where PaymentType==Cash
let priceCash = PriceList.Where(c => PriceList.Attributes("PaymentType").First().Value == "Cash")
// try to get the first Price element where PaymentType==Credit
let priceCredit = PriceList.Where(c => PriceList.Attributes("PaymentType").First().Value == "Credit")
有没有更好的方法来做到这一点?它似乎有效,但后来我在这里遇到了麻烦;
select new MyObj
{
Price1 = priceCash == null ? -1 : priceCash.ElementAt(0).Value,
Price2 = priceCredit == null ? -1 : priceCredit.ElementAt(0).Value,
}).ToList<MyObj>();
找不到元素时,ElementAt(0) 会导致异常。
干杯