Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> .Where 
V
    Опции темы
Garcian
Дата 10.12.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Здравствуйте! 
Собственно, класс хранит информацию о музыкальном альбоме: имя исполнителя, название, дату выхода. Кроме того, определение класса включает статический метод Album.GetAlbums(), возвращающий список некоторых альбомов нескольких групп.
Код

    internal class Album
    {
        public string Artist { get; set; }
        public string Title { get; set; }
        public DateTime Date    { get; set; }

        public Album(string artist, string title, DateTime date)
        {
            Artist = artist;
            Title = title;
            Date = date;
        }

        public override string ToString()
        {
            return string.Format("{0} ({1:dd.MM.yyyy})", Title, Date);
        }

        public static List<Album> GetAlbums()
        {
            return new List<Album>
                       {
                           new Album("The Beatles", "Revolver", new DateTime(1966, 08, 05)),
                           new Album("The Beatles", "Please Please Me", new DateTime(1963, 03, 22)),
                           new Album("The Beatles", "Abbey Road", new DateTime(1969, 09, 26)),
                           new Album("The Beatles", "Help!", new DateTime(1965, 08, 06)),
                           new Album("The Beatles", "Rubber Soul", new DateTime(1965, 12, 03)),
                           new Album("The Beatles", "With The Beatles", new DateTime(1963, 11, 22)),

                           new Album("The Rolling Stones", "Some Girls", new DateTime(1978, 06, 09)),
                           new Album("The Rolling Stones", "Let It Bleed", new DateTime(1969, 12, 05)),
                           new Album("The Rolling Stones", "Exile on Main St.", new DateTime(1972, 05, 12)),
                           new Album("The Rolling Stones", "Aftermath", new DateTime(1966, 04, 15)),
                           new Album("The Rolling Stones", "Between the Buttons", new DateTime(1967, 01, 20)),

                           new Album("Elvis Presley", "How Great Thou Art", new DateTime(1967, 02, 27)),
                           new Album("Elvis Presley", "Elvis Is Back!", new DateTime(1960, 04, 08)),
                           new Album("Elvis Presley", "Elvis Country", new DateTime(1971, 01, 02)),
                           new Album("Elvis Presley", "Elvis Presley", new DateTime(1956, 03, 23)),
                       };
        }
    }


В левом ListBox-е "Исполнители" вывожу исполнителей:
Код

        private void Form1_Load_1(object sender, EventArgs e)
        {
            ArtistsListBox.DataSource = Album.GetAlbums()
                                             .Select(album => album.Artist)
                                             .Distinct()
                                             .ToList();
        }


В правом LustBox -е я хочу вывести для выбранного исполнителя его альбом и дату. Собственно здесь и затор.
Код

        private void ArtistsListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            AlbumsListBox.DataSource = Album.GetAlbums()
                .Where(asd => asd.Artist == "The Beatles")
                .ToList();
        }


Пытался использовать для получения выделенного пункта списка исполнителей свойство объекта ListBox SelectedItem, но не смог его "приткнуть" куда надо. Должно быть что то типа этого: user posted image

Как мне перестроить запрос?


--------------------
Неродивый студент
PM MAIL   Вверх
Fortnox
Дата 11.12.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: нет
Всего: 22



У левого листбокса установите свойство ValueMember равным Artist.
Затем биндинг делайте так:
Код

listBox2.DataSource = Album.GetAlbums();

Ну и потом в обработчике события SelectedIndexChanged левого листбокса:
Код

listBox1.DataSource = Album.GetAlbums().Where(x => x.Artist == listBox2.SelectedValue.ToString()).ToList();

PM MAIL   Вверх
Garcian
Дата 11.12.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 5.11.2008

Репутация: нет
Всего: нет



Fortnox, Большое спасибо!
--------------------
Неродивый студент
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.