nik_neman
@nik_neman
php-junior

Постоянное поле при сортировке?

Здравствуйте.
Вот так вывожу данные из текста в dataGridView.
public Uefa(int number, string fio, string club, string role, int games, int goal, int assist)
{
this.number = number;
this.fio = fio;
this.club = club;
this.role = role;
this.games = games;
this.goal = goal;
this.assist = assist;
}
public static List<Uefa> getList()
{
// структура
List<Uefa> list = new List<Uefa>();

// массив данных
string[] arr = System.IO.File.ReadAllLines(filename, Encoding.Default);
for (int i = 0; i < arr.Length; i++)
{
// разбивка на подстроки
string[] line = arr[i].Split(' ');
Uefa data = new Uefa(list.Count + 1, line[0], line[1], line[2], Convert.ToInt32(line[3]), Convert.ToInt32(line[4]), Convert.ToInt32(line[5]));
// заполняем структуру
list.Add(data);
}

return list;

}
}

Number в файле. Это порядковый номер записи.
Вот так делаю сортировку.
dataGridView1.DataSource = null;
list = list.OrderBy(x => x.club).ToList<Uefa>();

Данные сортируются, но при этом сортируются и порядковый номер. Т.е. выходит 3,4,1,5.
Как зафиксировать порядковый номер, чтобы он не сортировался?
Заранее спасибо.
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
В Вашем варианте сортируются объекты, полями которого является club и number. Сортируете по полю club, то и поле number, того же объекта, "уплывет" вместе с ним.

Чтоб изменить порядок нумерации по новой, то пересчитывайте его после очередной сортировки.
int i=0;
foreach(var item in list) item.number = i++;

или
int i=0;
list.Select(l => l.number = i++);

А вообще, если Вам не надо где-то выводит порядковый номер единичного объекта, а указывать порядковый номер только при выводе всего списка, то нет смысла хранить порядковый номер в объекте.
int i=0;
foreach(var item in list) Console.Writeline("{0}.{1}", i++, item.ToString());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы