Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37

Поиск в List

17.02.2019, 13:58. Показов 1421. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, есть программа
Нужно реализовать поиск нужной книги по автору
Данные хранятся в листе
C#
1
List<Kniga> books = new List<Kniga>();
Хранятся они там в строке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        while (!Read.EndOfStream)
                {
                    str = Read.ReadLine();
                    st = str.Split();
                    for (int i = 11; i < st.Length; i++)
                    {
                        st[10] += st[i];
                    }
                    books.Add(new Kniga(st[0], st[1], st[2], st[3], st[4], st[5], st[6], st[7], st[8], st[9], st[10]));
                }
                foreach (Kniga book in books)
                {
                    listBox1.Items.Add(book.Name);
                }
Далее я написал такой код, но он не работает
C#
1
2
3
 string buf = textBox1.Text.ToString();
            string us = books.Find((buf) => buf);
            MessageBox.Show(us);
buf-переменная в которую записывается текст из текстбокса(а в том текст боксе указан автор) )
Так вот, как сделать, чтобы при поиске он показал мне названия тех книг у которых есть этот автор
// В листбоксе отображаются названия книг
Миниатюры
Поиск в List  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2019, 13:58
Ответы с готовыми решениями:

Поиск элементов в List
Добрый вечер. Имеется List типа ToolStripItem, и в нём объекты с различными именами, среди которых есть Table1, Table2 и так далее. Как мне...

Поиск элемента по индексу list
Ребят, помогите пожалуйста class LL { public string listok { get; set; } } вот удаление по индексу...

Поиск по list без учёта регистра
Есть некий list с записанными в него объектами класса Person. У объектов класса Person есть поле FirstName (имя) и LastName (фамилия). Как...

10
26 / 24 / 17
Регистрация: 10.01.2018
Сообщений: 66
17.02.2019, 16:16
C#
1
books.Where(x => x.Author == buf).Select(x => x.Name).ToList()
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
17.02.2019, 16:32  [ТС]
Что-то ничего не происходит.
Тут немного я переделал, а можно сделать так, есть у меня книга с названием "война и мир", и я в textbox ввел к примеру "война" и он допустим через MessageBox показал все названия книг где используется слово война, а если я ввел автора, то показались названия книг, написанные этим автором
Миниатюры
Поиск в List  
0
26 / 24 / 17
Регистрация: 10.01.2018
Сообщений: 66
17.02.2019, 16:48
Если считать, что в buf записано часть названия книги, то
C#
1
books.Where(x => x.Name.Contains(buf)).Select(x => x.Name).ToList()
В результате получим все книги, в имени которых содержится текст из переменной buf

Добавлено через 3 минуты
Если вы пытаетесь вывести следуюзим образом

C#
1
2
3
string buf = textBox1.Text.ToString();
string us = books.Find((buf) => buf);
MessageBox.Show(us);
То у вас ничего не получится, так как вы пытаетесь вывести объект.
Попробуйте вывести вот так. (сделайте из набора строк одну строку)

C#
1
2
3
string buf = textBox1.Text.ToString();
string us = string.Join(", ", books.Where(x => x.Author == buf).Select(x => x.Name))
MessageBox.Show(us);
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
17.02.2019, 16:59  [ТС]
Я написал так
C#
1
2
string buf = textBox11.Text.ToString();
            books.Where(x => x.Avtor.Contains(buf)).Select(x => x.Avtor).ToList();
И ничего не происходит.
У меня есть 2е книги в которых "Толстой" автор, я в textbox ввел "То" и ничего не происходит
0
26 / 24 / 17
Регистрация: 10.01.2018
Сообщений: 66
17.02.2019, 17:15
Лучший ответ Сообщение было отмечено Otvertka72 как решение

Решение

Что значит "ничего не происходит"?

C#
1
2
3
var authorName = textBox11.Text.ToString();
var booksNames = books.Where(x => x.Avtor.Contains(authorName)).Select(x => x.Name).ToList();
MessageBox.Show(string.Join(",", booksNames));
Вот код, который должен работать. Поместите его в обробатчик клика кнопки.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
17.02.2019, 17:18  [ТС]
Спасибо большое!! теперь все ок
0
26 / 24 / 17
Регистрация: 10.01.2018
Сообщений: 66
17.02.2019, 17:21
Метод ToList() можете убрать, в вашем случае он не нужен.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
17.02.2019, 17:37  [ТС]
А можно это как-то улучшить? и сделать чтоб я вводил жанр и автора одновременно, и он показывал название книг где есть автор и этот жанр одновременно
0
26 / 24 / 17
Регистрация: 10.01.2018
Сообщений: 66
17.02.2019, 20:43
Да, можно.
Для этого в метод Where передайте предикат с дополнительным условием:

C#
1
2
3
var authorName = textBox11.Text.ToString();
var genreName = textBox12.Text.ToString(); // здесь укажите текстбокс, в котором вводите жанр. я, для примера, указал textBox12
var booksNames = books.Where(x => x.Avtor.Contains(authorName) && x.Genre == genreName).Select(x => x.Name)
Если хотите найти вхождение в жанре, тогда сделайте по аналогии с именем автора:

C#
1
books.Where(x => x.Avtor.Contains(authorName) && x.Genre.Contains(genreName)).Select(x => x.Name)
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
19.02.2019, 09:19  [ТС]
Понял, спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2019, 09:19
Помогаю со студенческими работами здесь

Поиск в List
Доброго времени суток дорогие форумчане! Имеется List data1 с датами приведенный к массиву. В переменной peremennia типа string...

Поиск в List<MyClass>
Здравствуйте у меня такой вопрос я создал класс с тремя полями данных разного типа class MyClass { private string...

Поиск в списке массивов (List<byte[]>)
собственно в чем ошибка (Encoding роли не играет, он тут для читабельности) List&lt;byte&gt; btList = new...

Отображение в listBox поля элемента из коллекции коллекций List<List<>>
Есть карта в pictureBox-е. На ней мышкой ставяться флажки(маркеры). Нужно хранить их в БД с возможностью добавлять/удалять/изменять...

Ошибка трансляции List<List<string>> в DataGridView
Нужно вот такой список List&lt;List&lt;string&gt;&gt; отобразить в DataGridView Вот моя реализация. public int w { get; set; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru