как изменить один элемента кортежа в листе?
у меня такой вопрос: создал лист кортежа, который принимает 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]);
}