Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
5 / 5 / 0
Регистрация: 23.10.2011
Сообщений: 25

Поиск в ArrayList ничего не возвращает. Исправить код

14.10.2012, 19:10. Показов 1812. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть некоторый список,мне нужно найти в нем данные. Как я понимаю надо просто проверить массив на наличие этого элемента и если есть вывести его. Но почему то не хочет проверять на наличие. может в коде где ошибка. помогите пожалуйста.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public bool SearchBookByAuthor()
        {
 
            Console.WriteLine("Введите автора (А.С. Пушкин): ");
            string author = Console.ReadLine();
            foreach (Book b in al)
            {
                if (al.Contains(author) == true)
                {
                    author = b.Author;
 
                    Console.WriteLine("\nАвтор\t\tНазвание книги\t\tИздательство\t\tМарка компьютера\tГод издания\t\tКоличество страниц");
                    Console.WriteLine("--------------------------------------------------------------------------------------------------------------------------");
 
 
                    Console.Write(b.Author);
                    Console.Write(b.Name.ToString().PadRight(24));
                    Console.Write(b.Publishing_house.ToString().PadRight(24));
                    Console.Write(b.Brand.ToString().PadRight(24));
                   Console.Write(b.Year.ToString().PadRight(16));
                    Console.Write(b.Amount.ToString());
                    Console.WriteLine();
                    return true;
                }
                else
                   Console.WriteLine("Такого автора нет в нашей библиотеке");
                return false;
            }
            return true;
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2012, 19:10
Ответы с готовыми решениями:

Код со структурой не возвращает ничего
Написал код: #include <iostream> using std::cout; using std::cin; using std::endl; struct time { unsigned char hour; ...

Поиск в sqlite через LIKE ничего не возвращает
Всем привет! Парни, кто работал с sqlite? Столкнулся с проблемой, не понимаю в чем дело. Суть такая. Через LIKE делаю поиск, в ответ...

Как вернуть в запросе значение по умолчанию, если SELECT возвращает NULL или ничего не возвращает?
Добрый день! Например я хочу чтобы донное выражение возвращало мне 0 или скажем 1, если результатом выражения rating вернется NULL: ...

8
 Аватар для xZooYx
120 / 101 / 9
Регистрация: 12.06.2012
Сообщений: 322
Записей в блоге: 12
14.10.2012, 19:31
Что то я не понимаю...
Строка
C#
1
string author = Console.ReadLine();
говорит о том, что переменная author имеет тип string.
Строка
C#
1
foreach (Book b in al)
говорит о том, что переменная al имеет тип некой коллекции элементов типа Book.
Тогда как же вы пытаетесь найти в коллекции элементов типа Book элемент типа string?
C#
1
if (al.Contains(author) == true)
Вам надо делать как то так:
C#
1
2
3
4
5
6
7
foreach (Book b in al)
{
    if ( b.Author == author)
    {
        ...
    }
}
Добавлено через 7 минут
Кроме того Contains вам в данном примере ни к чему, потому что он помогает всего лишь определить, есть ли элемент в коллекции, но при этом не помогает получить этот элемент.

Более наглядно в данном случае выглядело бы LINQ-выражение, тогда код был бы следующего вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var existBooks = al.Select(b => b.Author == author).ToArray();
if(existBooks.Length <1)
{
    Console.WriteLine("Такого автора нет в нашей библиотеке");
    return false;
}
foreach (Book b in existBooks )
{
    author = b.Author;
    Console.WriteLine("\nАвтор\t\tНазвание книги\t\tИздательство\t\tМарка компьютера\tГод издания\t\tКоличество страниц");
    Console.WriteLine("--------------------------------------------------------------------------------------------------------------------------");
    Console.Write(b.Author);
    Console.Write(b.Name.ToString().PadRight(24));
    Console.Write(b.Publishing_house.ToString().PadRight(24));
    Console.Write(b.Brand.ToString().PadRight(24));
    Console.Write(b.Year.ToString().PadRight(16));
    Console.Write(b.Amount.ToString());
    Console.WriteLine();
}
return true;
0
5 / 5 / 0
Регистрация: 23.10.2011
Сообщений: 25
14.10.2012, 20:03  [ТС]
что то
C#
1
al.Select(b => b.Author == author).ToArray();
ошибку выдает. Select ему не нравится
0
 Аватар для xZooYx
120 / 101 / 9
Регистрация: 12.06.2012
Сообщений: 322
Записей в блоге: 12
14.10.2012, 20:04
Пространство имен System.Linq надо подключить.
0
5 / 5 / 0
Регистрация: 23.10.2011
Сообщений: 25
14.10.2012, 20:05  [ТС]
Цитата Сообщение от xZooYx Посмотреть сообщение
Пространство имен System.Linq надо подключить.
в том то и дело что подключено, а все равно ошибка
0
 Аватар для xZooYx
120 / 101 / 9
Регистрация: 12.06.2012
Сообщений: 322
Записей в блоге: 12
14.10.2012, 20:36
Хм, ну не знаю, приведите текст ошибки что ли... И что у вас за версия .Net Framefork, может не подключена библиотека...
0
5 / 5 / 0
Регистрация: 23.10.2011
Сообщений: 25
15.10.2012, 05:20  [ТС]
Цитата Сообщение от xZooYx Посмотреть сообщение
Хм, ну не знаю, приведите текст ошибки что ли... И что у вас за версия , может не подключена библиотека...
текст ошибки: "System.Collections.ArrayList" не содержит определения для "Select" и не был найден метод расширения "Select", принимающий тип "System.Collections.ArrayList" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)
стоит .Net Framefork 4
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.10.2012, 08:12
Пользоваться надо List<Book>, а все эти arraylist от противного. Ими давно уже никто не пользуется.
0
 Аватар для xZooYx
120 / 101 / 9
Регистрация: 12.06.2012
Сообщений: 322
Записей в блоге: 12
15.10.2012, 11:04
Прошу прощения но ArrayList действительно не дружит с LINQ. Вместо ArrayList лучше бы использовать List<Book>, тогда и элементы коллекции были бы типизированные.
И с LINQ выражением я немного напутал, оно должно выглядеть так:
C#
1
var existBooks = al.Where(b => b.Author == author).ToArray();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2012, 11:04
Помогаю со студенческими работами здесь

ArrayList возвращает пустой элемент
Доброго времени суток! Подскажите, почему массив возвращает пустые элементы после нажатия кнопки &quot;Сохранить&quot; на форме? ...

Поиск в AVL - дереве, исправить код
Здравствуйте форумчане! Проблема такая Есть AVL - дерево, надо сообразить поиск, я эту функцию написал, но неправильно походу,...

Поиск последовательности чисел (исправить код)
есть программа { FILE* f=fopen(&quot;in.txt&quot;,&quot;rb&quot;); // открыть файл FILE* f1=fopen(&quot;out.txt&quot;,&quot;wb&quot;); char c; ...

Поиск седловых точек: исправить код
Пиве, помогите! Я находу максимальные и минимальные элементы по строка и столбцам, Мне надо их вывести как седловые точки, но у меня не...

Поиск по ячейкам. Исправить приведенный код
Помогите пожалуйста с кодом, тупит часто Private Sub CommandButton1_Click() For i = 30 To 65 If...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru