как изменить один элемента кортежа в листе?

у меня такой вопрос: создал лист кортежа, который принимает 2 параметра, DateTIme и string , теперь питаюсь в этих кортежах изменить DateTime, ну типа сортировать, НО сортировать HE целиком кортежи, а конкретно один item1 кортежа а конкретнее DateTime, вот: так --> введите сюда описание изображения public static void Main() {

  List<(DateTime, string)> list = new List<(DateTime, string)>();
    list.Add((DateTime.Now.AddDays(1), "test"));
    list.Add((DateTime.Now.AddDays(3), "test2"));
    list.Add((DateTime.Now.AddDays(2), "test3"));
    
    for (int i = list.Count - 1; i >0; i--)
    {
        for (int j = 0; j < i; j++)
        {
            DateTime temp=list[j].Item1;
            list[j].Item1 = list[j+1].Item1;
            list[j].Item1 = temp;
            
        }
    }
}

по моему я нашел решение:

   for (int i = list.Count - 1; i >0; i--)
    {
        for (int j = 0; j < i; j++)
        {
            if (list[j].Item1> list[j+1].Item1 )
            {
                (DateTime, string) turple;
                turple.Item1 = list[j].Item1.AddDays(1);
                turple.Item2 = list[j].Item2;

                list[j] = turple;
            }
            
            
        }
    }

Ответы (1 шт):

Автор решения: aepot

Тапл - структура, при обращении к списку по индексу вы получаете ее копию, и изменение не имеет никакого смысла. Об этом компилятор вас любезно и предупреждает.

Пузырька же делаете? Надо же целиком элементы махнуть, верно? Давайте с теми же кортежами:

if (list[j].Item1 > list[j + 1].Item1)
{
    (list[j], list[j + 1]) = (list[j + 1], list[j]);
}
→ Ссылка