c #, Ограничить пользовательский массив, чтобы показать только самые высокие значения - PullRequest
0 голосов
/ 20 апреля 2011

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

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

/ Маттиас

    public ButtonForm()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    /* *************************************************************************** */

    class Person
    {
        public string Name { get; set; }
        public int Height { get; set; }
    }

    private void Button_Generate_Click(object sender, EventArgs e)
    {

        Person[] persons = { new Person { Name=TextBox_Name1.Text, Height=int.Parse(TextBox_Height1.Text)},
                             new Person { Name=TextBox_Name2.Text, Height=int.Parse(TextBox_Height2.Text) },
                             new Person { Name=TextBox_Name3.Text, Height=int.Parse(TextBox_Height3.Text) },
                             new Person { Name=TextBox_Name4.Text, Height=int.Parse(TextBox_Height4.Text) },
                             new Person { Name=TextBox_Name5.Text, Height=int.Parse(TextBox_Height5.Text) } };

        IEnumerable<Person> query = persons.OrderBy(person => person.Height);

        foreach (Person person in query)
        {
            Console.WriteLine("{0} - {1}", person.Name, person.Height);
        }

    }

    private void groupBox1_Enter(object sender, EventArgs e)
    {

    }

}

}

Ответы [ 3 ]

3 голосов
/ 20 апреля 2011

Чтобы получить самых высоких людей, просто используйте:

int highest = persons.Max(p => p.Height);
var query = persons.Where(p => p.Height == highest);
3 голосов
/ 20 апреля 2011

Это должно сработать

int maxHeight = persons.Max(p => p.Height);

var tallestPersons = persons.Where(p => p.Height == maxHeight);
1 голос
/ 20 апреля 2011

В вашем коде:

    foreach (Person person in query) {
        if(person.Height == query.First().Height) {
             Console.WriteLine("{0} - {1}", person.Name, person.Height);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...