I ran this and it writes out 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);
However, looking at the xml, it seems like the following which prints out 033A is what you want
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() will pull all the preceding siblings. Last() will get the last of the sequence.
Conversely, ElementsAfterSelf() will pull all the subsequent siblings. First() will get the first of the sequence.