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

Поиск в List<class>

05.08.2012, 22:34. Показов 10532. Ответов 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? Например, myList. Сейчас я могу с помощью...

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

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

11
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
05.08.2012, 23:09
C# Скопировано
1
list.Exists(x => x.pole1 == "aaa");
2
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
06.08.2012, 10:53
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
Цитата Сообщение от borovik Посмотреть сообщение
вопрос как осуществить bool поиск на повтор? или хотябы на повтор по одному полю?
т.е. содержит ли список элементы с заданным значением поля (-ей), или содержит ли вообще элементы, поля которых имеют равные значения?
1
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
06.08.2012, 11:10
Если вы имели ввиду поиск дубликатов, тогда что-то вроде этого:
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
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
06.08.2012, 11:31
Цитата Сообщение от borovik Посмотреть сообщение
вопрос как осуществить bool поиск на повтор? или хотябы на повтор по одному полю?
Либо использовать лямбды с кастомным поиском, как уже предложили.
Либо имлементировать интерфейс IEquatable<T>, и пользоваться методом Contains, который предополагалось изначально.
1
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
06.08.2012, 15:35  [ТС]
спс всем кто выше описал
сделал так, отлично работает, вопрос чем они отличаются?

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
 Аватар для Psilon
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.08.2012, 15:44
Проще записать как
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  [ТС]
Ещё вопрос, а как удалить элемент?
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.08.2012, 15:58
Цитата Сообщение от borovik Посмотреть сообщение
Ещё вопрос, а как удалить элемент?
Remove()
RemoveAt()
RemoveAll()
1
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
06.08.2012, 16:01  [ТС]
понятно, то я думаю чтото на предикат ругается в Remove(), оказывается есть спец функция для этого RemoveALL()
теперь всё получилось, спс ребята! )

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи будет иметь приблизительный результат вычисления для метода обработки данных из double buffering.
Hrethgir 10.04.2025
В продолжение Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу можно будет корректировать по ходу. Это потому что. . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер