Линк Коллекция Сортировка - PullRequest
0 голосов
/ 20 февраля 2019

Мне нужно отсортировать страны в этой коллекции, используя LINQ:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
        class Country
        {
            public string Name { get; set; }
            public int Population { get; set; }

            public Country(string name, int population)
            {
                Name = name;
                Population = population;
            }
        }

        static void Main(string[] args)
        {
            Country[] countryCollection = 
            { 
                new Country("Afghanistan", 34656032),
                new Country("Austria", 8857960),
                new Country("Brazil", 210147125),
                new Country("Denmark", 5789957),
                new Country("Russia", 144526636),
                new Country("China", 1403500365),
                new Country("Turkey", 80810525),
                new Country("Serbia", 7001444),
                new Country("Iraq", 37202572),
                new Country("San Marino", 33344) 
            };
        }
    }
}

Она должна быть отсортирована по населению и напечатана таким образом.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Вы можете использовать список или, если вы хотите сохранить массив, вы можете использовать делегата для анонимного метода:

static void Main(string[] args)
        {

            Country[] countryCollection = {
                new Country("Afghanistan", 34656032),
                new Country("Austria", 8857960),
                new Country("Brazil", 210147125),
                new Country("Denmark", 5789957),
                new Country("Russia", 144526636),
                new Country("China", 1403500365),
                new Country("Turkey", 80810525),
                new Country("Serbia", 7001444),
                new Country("Iraq", 37202572),
                new Country("San Marino", 33344)
            };

            Array.Sort(countryCollection, delegate(Country country1, Country country2) {
                return country1.Population.CompareTo(country2.Population);
            });

            foreach (Country country in countryCollection) Console.WriteLine("Country name: " + country.Name + " Population: " + country.Population);
            Console.ReadKey();        

        }

См. http://www.csharp -examples.net / sort-array / для более подробной информации.

0 голосов
/ 21 февраля 2019

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

countryCollection = countryCollection.ToList().OrderBy(x => x.Population).ToArray();

Или, если вы хотите упорядочить его по убыванию, вместо:

countryCollection = countryCollection.ToList().OrderByDescending(x => x.Population).ToArray();
0 голосов
/ 20 февраля 2019

Это должно делать то, что вы хотите

class Program
{
    static void Main(string[] args)
    {
        List<Country> countryCollection = new List<Country>() {
                                        new Country("Afghanistan",34656032),
                                        new Country("Austria", 8857960),
                                        new Country("Brazil", 210147125),
                                        new Country("Denmark", 5789957),
                                        new Country("Russia", 144526636),
                                        new Country("China", 1403500365),
                                        new Country("Turkey", 80810525),
                                        new Country("Serbia", 7001444),
                                        new Country("Iraq", 37202572),
                                        new Country("San Marino", 33344) };

        var OrderedCountries = countryCollection.OrderByDescending(x => x.Population).ToList();

        foreach (var country in OrderedCountries)
        {
            Console.WriteLine($"The country {country.Name} has {country.Population} people");
        }

    }
}

public class Country
{
    public string Name { get; set; }
    public int Population { get; set; }


    public Country(string name, int population)
    {
        Name = name;
        Population = population;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...