Данные в List, как csv. Нужно отсортировать - C#
Формулировка задачи:
Всем привет. Сразу прошу прощения за возможный плохой код. Я начинающий.
Вопрос такой. Есть List, в нем есть данные через ";", как в csv:
Обычная футбольная таблица. Команда;Игры;Выигрыши;Ничьи;Поражения;Забитые голы;Пропущенные голы;Разница мячей;Очки
Нужно отсортировать элементы этого List сначала по Очкам, потом по Разнице мячей, потом по Забитым голам, а потом по Выигрышам. По убыванию.
То есть, получается сортировка по нескольким столбцам таблицы, грубо говоря.
Как это сделать?
Заранее благодарю.
List<string> table = new List<string>()
{
"команда;10;5;2;3;15;3;12;17",
"команда;10;2;4;4;12;5;7;10",
"команда;10;3;7;0;10;7;3;16"
};Решение задачи: «Данные в List, как csv. Нужно отсортировать»
textual
Листинг программы
List<string> table = new List<string>()
{
"команда;10;5;2;3;15;3;12;17",
"команда;10;2;4;4;12;5;7;10",
"команда;10;3;7;0;10;7;3;16"
};
var newTable = (from t in table
let arr = t.Split(';')
select new {
Name = arr[0],
MatchesWon = int.Parse(arr[1]),
MatchesDrawn = int.Parse(arr[2]),
MathesLost = int.Parse(arr[3]),
GoalsFor = int.Parse(arr[4]),
GoalsAgainst = int.Parse(arr[5]),
GoalDifference = int.Parse(arr[6]),
Points = int.Parse(arr[7]),
} into team
orderby team.Points descending, team.GoalDifference descending, team.GoalsFor descending, team.MatchesWon descending
select team
).ToArray();
foreach (var team in newTable)
{
Console.WriteLine("{0} has {1} point(s)", team.Name, team.Points);
}