我跑这个,它写出032A。
string xml = "<top><SeatSeg><Num>9</Num></SeatSeg><SeatAssignment><Loc>032A</Loc></SeatAssignment><SeatSeg><Num>10</Num></SeatSeg><SeatAssignment><Loc>033A</Loc></SeatAssignment></top>";
int seatNum = 10;
XDocument xDoc = XDocument.Parse(xml);
string seatLoc = (from seatSeg in xDoc.Element("top").Elements("SeatSeg")
where seatSeg.Element("Num").Value == seatNum.ToString()
select seatSeg
).Single().ElementsBeforeSelf().Last().Element("Loc").Value;
Console.WriteLine(seatLoc);
然而,看着XML,它似乎是打印出以下033A是你想要的
string xml = "<top><SeatSeg><Num>9</Num></SeatSeg><SeatAssignment><Loc>032A</Loc></SeatAssignment><SeatSeg><Num>10</Num></SeatSeg><SeatAssignment><Loc>033A</Loc></SeatAssignment></top>";
int seatNum = 10;
XDocument xDoc = XDocument.Parse(xml);
string seatLoc = (from seatSeg in xDoc.Element("top").Elements("SeatSeg")
where seatSeg.Element("Num").Value == seatNum.ToString()
select seatSeg
).Single().ElementsAfterSelf().First().Element("Loc").Value;
Console.WriteLine(seatLoc);
ElementsBeforeSelf()将会把所有前面的兄弟姐妹。 Last()将获得序列的最后一个。
相反,ElementsAfterSelf()将拉动所有后续的兄弟姐妹。 First()将获得序列的第一个。
谢谢Rchem,你是对的第二个例子正是我所需要的! 我是新来的c#和Linq :)我可以问我是否需要扩展它来处理下面的senario如何处理它? 033A SeatAssignment> 033B SeatAssignment> 期望返回033A和033B作为Num是10两个。 感谢您的帮助 –
2010-07-13 12:02:52