Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/55: Рейтинг темы: голосов - 55, средняя оценка - 4.71
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
1

Поиск в List<class>

05.08.2012, 22:34. Показов 10418. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет есть mycl, с 2 полями
C#
1
2
3
4
5
List<mycl> pic = new List<mycl>();
pic.Add(new mycl("aaa", "zzz"));
pic.Add(new mycl("bbb", "xxx"));
pic.Add(new mycl("ccc", "vvv"));
pic.Add(new mycl("ddd", "nnn"));
вопрос как осуществить bool поиск на повтор? или хотябы на повтор по одному полю?

C#
1
if(pic.Containes(new mycl("aaa", "zzz")))
- не работает

C#
1
2
3
4
5
if(pic.find(delegate(mycl mc){
  foreach(var item in mc){
    if(item.pole1 == "zzz") return false;
  }
}))
- не работает

с .Exists - совсем не получилось
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2012, 22:34
Ответы с готовыми решениями:

Конвертировать один элемент из List<List<Class>> в list и string
Как можно перевести один выбранный элемент из List&lt;List&lt;Data&gt;&gt; myList в list и string? Например,...

Поиск в List<List<string>>: поиск по части строки
Здравствуйте. Надо реализовать поиск по части строки. Т.е. у меня есть List объектов...

Class to list
Добрый день! Подскажите как создать список из класса public class Class1 { ...

Хранение List<class>
У мене есть класс который принимает имя и пароль. class User { string name { get;...

11
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
05.08.2012, 23:09 2
C#
1
list.Exists(x => x.pole1 == "aaa");
2
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
06.08.2012, 10:53 3
C#
1
if(pic.Containes(new mycl("aaa", "zzz")))
Не работает потому, что это разных объекта (грубо говоря в коде у вас два new, каждый порождает свою сущность). Contains проверяет равенство объектов, понятие равенства каждый класс может определять по-своему.

Этот код будет работать, есл mycl будет структурой, или же если equals у него будет переопределён на "два объекта mycl равны тогда, когда равны их поля".
1
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.08.2012, 11:05 4
Цитата Сообщение от borovik Посмотреть сообщение
вопрос как осуществить bool поиск на повтор? или хотябы на повтор по одному полю?
т.е. содержит ли список элементы с заданным значением поля (-ей), или содержит ли вообще элементы, поля которых имеют равные значения?
1
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
06.08.2012, 11:10 5
Если вы имели ввиду поиск дубликатов, тогда что-то вроде этого:
C#
1
2
3
4
5
var query = from i in list
group i by new { i.Name, i.Age } into g 
where g.Count() > 1 
select g;
var duplicate_exists = query .Any();
Определеяет "есть ли в list объекты, у которых повторяются поля Name и Age "
1
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
06.08.2012, 11:31 6
Цитата Сообщение от borovik Посмотреть сообщение
вопрос как осуществить bool поиск на повтор? или хотябы на повтор по одному полю?
Либо использовать лямбды с кастомным поиском, как уже предложили.
Либо имлементировать интерфейс IEquatable<T>, и пользоваться методом Contains, который предополагалось изначально.
1
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
06.08.2012, 15:35  [ТС] 7
спс всем кто выше описал
сделал так, отлично работает, вопрос чем они отличаются?

C#
1
2
3
4
5
6
7
8
string search = "aaa";
 if (pic.Exists(delegate(Mycl cl)
            {
                if (cl.str1.Contains(search))
                    return true;
                else
                    return false;
            }))
C#
1
2
3
4
5
6
7
8
string search = "aaa";
 if (pic.Containes(delegate(Mycl cl)
            {
                if (cl.str1.Contains(search))
                    return true;
                else
                    return false;
            }))
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.08.2012, 15:44 8
Проще записать как
C#
1
2
3
string search = "aaa";
if (pic.Containes(delegate(Mycl cl)
   {return cl.str1.Contains(search)}));
Но лямбды по-любому лучше
1
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
06.08.2012, 15:48  [ТС] 9
Ещё вопрос, а как удалить элемент?
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.08.2012, 15:58 10
Цитата Сообщение от borovik Посмотреть сообщение
Ещё вопрос, а как удалить элемент?
Remove()
RemoveAt()
RemoveAll()
1
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
06.08.2012, 16:01  [ТС] 11
понятно, то я думаю чтото на предикат ругается в Remove(), оказывается есть спец функция для этого RemoveALL()
теперь всё получилось, спс ребята! )

---------
остался теоретический вопрос который я описал выше, чем отличается Containes от exsist
0
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
06.08.2012, 17:12 12
Цитата Сообщение от borovik Посмотреть сообщение
чем отличается Containes от exsist
Exists использует лямбду - внешнюю функцию, которую нужно передавать.
Contains - использует внутренний метод сравнения Equals<T>, который определяется внутри самого класса.
1
06.08.2012, 17:12
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.08.2012, 17:12
Помогаю со студенческими работами здесь

List <Class> как реализовать ?
дело в том, что я впервые сталкиваюсь со списками с несколькими параметрами нет времени читать...

List<T> + class : как присваивать?
Есть класс class Field { public byte Mask; public int Block; } static List&lt;Field&gt;...

List<class> как передается?
Как правильно передается List&lt;class&gt;? Никак до конца не могу понять Вот пускай будет пример: ...

Перезапись класса в List<Class>
Добрый день, уважаемые форумчане! Настал тот день, когда я решил зарегистрироваться на форуме, так...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru