Как мне добавить разные значения в список с условием? - PullRequest
0 голосов
/ 29 октября 2018

У меня есть список, в котором есть страны, и у каждой страны есть номер. Каждая страна может появиться снова с другим номером.

Моя задача - записать, в какой стране номер один и сколько раз.

Например:

Англия 1,
Германия 3
Венгрия 1,
Германия 1,
Sweeden 2,
Венгрия 4,
Французский 2,
Венгрия 1,
Англия 1,
Англия 1

Ответ должен выглядеть следующим образом:

«Число 1 появилось под Венгрией 2 раза»
«Число 1 появилось под Англией 3 раза»

class countries
{
    public string country;
    public int number

    static void Main(string[] args)
    {
        #region Beolvasás
        List<countries> x = new List<countries>();
        StreamReader d = new StreamReader("focivb.txt", Encoding.Default);

        while (!d.EndOfStream)
        {
            string[] s = d.ReadLine().Split('\t');

            countries a = new countries();

            a.country= s[0];
            a.number= Convert.ToInt32(s[1]);


            x.Add(a);
        }
        d.Close();
    }
}

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

1 Ответ

0 голосов
/ 29 октября 2018

Используйте linq и группу по имени и номеру, а затем подсчитывайте данные. Мой фрагмент:

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp3
{
    public class CountryNumber
    {
        public string Country { get; set; }
        public int Number { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var data = new List<CountryNumber> {
                new CountryNumber { Country = "England", Number = 1},
                new CountryNumber { Country = "Germany", Number = 3},
                new CountryNumber { Country = "Hungary", Number = 1},
                new CountryNumber { Country = "Germany", Number = 1},
                new CountryNumber { Country = "Sweeden", Number = 1},
                new CountryNumber { Country = "Hungary", Number = 4},
                new CountryNumber { Country = "French", Number = 2},
                new CountryNumber { Country = "Hungary", Number = 1},
                new CountryNumber { Country = "England", Number = 1},
                new CountryNumber { Country = "England", Number = 1}
            };

            var groupped = data.GroupBy(d => new { Country = d.Country, Number = d.Number });

            foreach (var one in groupped) { 
              Console.WriteLine($"{one.Key.Country}, {one.Key.Number}: {one.Count()}");
            }                        
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...