Чтобы ответить на ваш вопрос «есть ли лучший путь», как насчет этого: поскольку счет, по-видимому, всегда представляет собой одну цифру (возможно, перед -
), мы можем использовать регулярное выражение, чтобы вывести счет, определить переменная диапазона с let
, затем упорядочить по ней:
// With a positive look-behind assertion for Score="
// Capture:
// an optional minus
// then
// a digit
Regex score = new Regex("(?<=Score=\")-?\\d");
string[] thedata = new[] { "Score=\"5\"", "Score=\"-2\"" };
var query = from line in thedata
let scoreAsString = score.Match(line).Value
orderby int.Parse(scoreAsString)
select line;
foreach (var outputLine in query)
{
Console.WriteLine(outputLine);
}
производит
Score="-2"
Score="5"
Положительное косвенное утверждение (?<=Score=\")
говорит о том, что следует рассматривать сопоставление, только если предыдущий текст Score="
; только необязательные -
и цифра фактически записываются в Match
.