1

У меня есть многомерный список. Мне нужно сложить его элементы под индексом 4,5,6, а затем вывести пользователю

List<List<string>> Users = new List<List<string>>()
{
    new List<string> {"******", "*", "*", "1.22.2002", "34", "24", "152"},
    new List<string> {"*****", "*", "*", "17.08.2004", "24", "2234", "1888"},
    new List<string> {"****", "*", "*", "3.1.2000", "24", "34", "352"},
    new List<string> {"*****", "****", "*", "4.7.1999", "224", "234", "1452"},
};

Последние 3 значения нужно сложить между собой и вывести. Как это сделать? Я нуб в c#

Kromster
  • 13,809
NeoShima
  • 143
  • 1
    Для начала надо определиться, что именно складывать. Вот у вас список пользователей, я с трудом представляю, зачем и как складывать пароли или Id пользователей. И гм, в обычных приложениях так не делают: вам нужен List<User>, а не List<List<string>> -иначе будет крайне неудобно работать. – A K Oct 05 '20 at 09:56
  • @AK человек имеет ввиду 4,5,6 элементы под-списков, очевидно же – Kromster Oct 05 '20 at 09:57
  • @AK Я так и указал. Мне нужно сложить 4, 5, 6 элементы этого списка. Просто скажите как мне их сложить и всё – NeoShima Oct 05 '20 at 09:59
  • Можете привести ожидаемый вывод? – timur Oct 05 '20 at 10:20
  • Это у вас список списков. Многомерных списков в C# нет. – Геннадий П Oct 05 '20 at 16:27

1 Answers1

3

Для начала, если вы храните данные для обработки, лучше это делать в наиболее удобном формате. Строки надо хранить в string, дату в DateTime, целые числа - в int.

Вот к примеру, я создал класс User:

public class User
{
    public string FirstName { get; set; }
    public string SecondName { get; set; }
    public string ThirdName { get; set; }
    public DateTime Date { get; set; }
    public int Number1 { get; set; }
    public int Number2 { get; set; }
    public int Number3 { get; set; }
public User(string firstName, string secondName, string thirdName, DateTime date, int number1, int number2, int number3)
{
    FirstName = firstName;
    SecondName = secondName;
    ThirdName = thirdName;
    Date = date;
    Number1 = number1;
    Number2 = number2;
    Number3 = number3;
}

public override string ToString()
{
    return string.Join(&quot;, &quot;, FirstName, SecondName, ThirdName, Date.ToString(&quot;D&quot;), Number1, Number2, Number3);
}

}

У него помимо необходимых свойств есть конструктор для удобного создания класса и переопределенный ToString, который я буду использовать для вывода данных в консоль.

И написал вот такой код:

class Program
{
    static void Main(string[] args)
    {
        List<User> Users = new List<User>()
        {
            new User ("******", "*", "*", DateTime.Parse("22.1.2002"), 34, 24, 152),
            new User ("*****", "*", "*", DateTime.Parse("17.08.2004"), 24, 2234, 1888),
            new User ("****", "*", "*", DateTime.Parse("3.1.2000"), 24, 34, 352),
            new User ("*****", "****", "*", DateTime.Parse("4.7.1999"), 224, 234, 1452)
        };
    int result1 = 0, result2 = 0, result3 = 0;
    foreach (User data in Users)
    {
        Console.WriteLine(data);
        result1 += data.Number1;
        result2 += data.Number2;
        result3 += data.Number3;
    }

    Console.WriteLine(&quot;Результаты: {0}, {1}, {2}&quot;, result1, result2, result3);
    Console.ReadKey();
}

}

И получил вот такой вывод в консоль

******, *, *, 22 января 2002 г., 34, 24, 152
*****, *, *, 17 августа 2004 г., 24, 2234, 1888
****, *, *, 3 января 2000 г., 24, 34, 352
*****, ****, *, 4 июля 1999 г., 224, 234, 1452
Результаты: 306, 2526, 3844

Как видите, ничего сложного, если работать с правильно сохраненными данными.

aepot
  • 49,560