LINQ to Objects не имеет встроенного преобразования, но LINQ to XML имеет:
var calculation = from y in x.Elements("row")
orderby (int) y.Element("BUILD_ORDER")
select new
{
calcAttribute = y.Element("ELEMENT").Value
};
Есть ли причина, по которой вы используете анонимный тип, а не просто выбираете нужное значение? Например:
var calculation = from y in x.Elements("row")
orderby (int) y.Element("BUILD_ORDER")
select y.Element("ELEMENT").Value;
Обратите внимание, что оба из них вызовут исключение, если субэлементы BUILD_ORDER или ELEMENT отсутствуют. Это можно исправить, используя преобразование в int?
вместо int
для BUILD_ORDER
и преобразование в string
для ELEMENT:
var calculation = from y in x.Elements("row")
orderby (int?) y.Element("BUILD_ORDER")
select (string) y.Element("ELEMENT");
Это все равно не удастся, если BUILD_ORDER существует, но, конечно, не может быть проанализирован как целое число.
Если ваши данные должны всегда иметь эти элементы, первая форма лучше, так как она обнаружит любые ошибки данных раньше.