Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858

Поиск значения колекции, в колекции другой колекции

01.10.2024, 01:59. Показов 3278. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем сложная задача.
Есть List<string> col_1
Есть ObservableCollection<class_1> col_2
Внутри класса создаем коллекцию
C#
1
2
3
4
5
peblic class class_1 
{
  public string group { get; set;}
  public ObservableCollection names { get; set;}
}
Добавляем в col_1 элементы:
C#
1
2
3
4
5
col_1.Add("Картошка");
col_1.Add("Яблоко");
col_1.Add("Морковка");
col_1.Add("Капуста");
col_1.Add("Малина");
Добавляем в col_2 элементы:
C#
1
2
3
col_2.Add(new class_1() { group = "Овощи", names = new ObservableCollection<string> { "Картошка", "Марковка" } });
col_2.Add(new class_1() { group = "Фрукты", names = new ObservableCollection<string> { "Яблоко", "Персик" } });
col_2.Add(new class_1() { group = "Ягоды", names = new ObservableCollection<string> { "Вишня", "Малина" } });
Затем закидываем в ComboBox элементы из первой коллекции:
C#
1
cb1.ItemsSource = col_1;
Затем необходимо, при выборе позиции в ComboBox, чтобы он добавлялся в ListBox (l1), происходила фильтрация по выбранным позициям (отображаемым в l1), происходил поиск соответствующих позиций в col_2.names и отображались в ListBox 2 (l2).
в l2 у меня происходит DataTemlate
XML
1
2
<TextBlock Text={Binding Path=group}/>
<ListBox ItemSource={Binding Path=names}>
Как то таааааак..... В общем всё работает, кроме собсно поиска на соответствие коллекции l1.Items в Коллекции col_2.names. Представления не имею как это воплотить в жизнь, как найти и отобразить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2024, 01:59
Ответы с готовыми решениями:

Отобразить элементы колекции в GUI
Всем привет. У меня такой вопрос. Как можно отобразить элементы ObservableCollection&lt;string&gt; в форме WPF. Смысл в чем. Существует...

Два CollectionViewSource привязанные к одной колекции
Здравствуйте, DataTable sprav = new DataTable(); FILL(sprav); CollectSprav =...

Как реализовать обводку колекции элементов?
Нужно из того что слева сделать так как справа. По сути у меня есть некая коллекция Image, которая соединенна определённым образом. Мне...

43
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
02.10.2024, 09:02
Студворк — интернет-сервис помощи студентам
Jylik, в c# удобно что на одно решение есть десятки вариантов реализации. Остается только выбрать который подходит для задачи.
Цитата Сообщение от Jylik Посмотреть сообщение
MVVM и VM я этого не понимаю, совсем при совсем не понимаю.
Я прикреплял ссылки, просто нужно повторять с нуля примеры что там есть. И на практике поймете достаточно быстро.
Тут на самом деле магии нет никакой и сверх сложностей.
Цитата Сообщение от Jylik Посмотреть сообщение
сть проблема с поиском коллекции "l1.items" в коллекции "col_2.names" (как искать коллекцию в коллекции, и выводить их соответствия)
Я вам писал же код
C#
1
2
3
4
 // Фильтрация по выбранной группе
         var filteredNames = col2
             .Where(g => g.group == selectedGroup)
             .SelectMany(g => g.names);
В кратце в коллекции col2 мы ищем по имени группы g.group == selectedGroup
Далее создаем выборку данных g => g.names
1
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
02.10.2024, 09:04  [ТС]
xellan24rus, не понимаю, как значения из коллекции col_1 попали в selected_col_1....
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
02.10.2024, 09:05
Цитата Сообщение от Jylik Посмотреть сообщение
А чем сложнее использовать ссылку на относительно выбранный элемент?
В WPF (Windows Presentation Foundation) подход MVVM (Model-View-ViewModel) предлагает несколько преимуществ по сравнению с использованием ссылок на элементы управления напрямую. Давайте рассмотрим, почему MVVM предпочтительнее и какие сложности могут возникнуть при использовании прямых ссылок на элементы управления.

▎Преимущества MVVM:

1. Отделение логики от представления:
- В MVVM логика приложения отделена от пользовательского интерфейса. Это делает код более чистым и поддерживаемым. Вы можете изменять UI без необходимости изменять бизнес-логику.

2. Упрощенное тестирование:
- ViewModel можно тестировать независимо от UI. Это позволяет писать юнит-тесты для логики приложения без необходимости взаимодействия с графическим интерфейсом.

3. Связывание данных:
- MVVM использует механизмы привязки данных WPF, что позволяет автоматически обновлять UI при изменении данных в модели. Это упрощает обновление интерфейса и уменьшает количество кода, необходимого для управления состоянием UI.

4. Улучшенная поддержка команд:
- В MVVM команды могут быть реализованы в ViewModel, что позволяет легко обрабатывать действия пользователя без необходимости напрямую взаимодействовать с элементами управления.

▎Проблемы с использованием ссылок на элементы управления:

1. Трудности с поддержкой:
- Если вы напрямую обращаетесь к элементам управления из кода, это может привести к сложному и запутанному коду, который трудно поддерживать и изменять.

2. Зависимость от UI:
- Прямые ссылки на элементы управления создают зависимость между логикой приложения и пользовательским интерфейсом, что усложняет тестирование и рефакторинг.

3. Проблемы с многократным использованием:
- Если вам нужно использовать один и тот же элемент управления в разных частях приложения, ссылки на него могут усложнить повторное использование кода.
1
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
02.10.2024, 09:06  [ТС]
xellan24rus, спасибо, сейчас попробую почитать (._.')
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
02.10.2024, 09:09
Цитата Сообщение от Jylik Посмотреть сообщение
не понимаю, как значения из коллекции col_1 попали в selected_col_1....
SelectedItem у ComboBox имеет привязку к Selected_col_1 - свойство vm
C#
1
2
3
4
5
6
7
8
9
 private string _selectedCol1;
     public string Selected_col_1
     {
         get => _selectedCol1;
         set
         {
             SetField(ref _selectedCol1, value);
         }
     } //Свойство для хранения выбранного значения ComboBox
Сама привязка
XML
1
<ComboBox Height="40" Width="250" HorizontalAlignment="Center" SelectedItem="{Binding Selected_col_1}" SelectedIndex="0" Margin="20 20 0 0" ItemsSource="{Binding col_1}" SelectionChanged="ComboBox_SelectionChanged"></ComboBox>
SelectedItem="{Binding Selected_col_1}"

Добавлено через 1 минуту
Цитата Сообщение от Jylik Посмотреть сообщение
сейчас попробую почитать (._.')
Конечно нужно, как видите кода для привязки vm, свойств и прочего на порядок меньше, чем кажется на первый взгляд
1
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
02.10.2024, 09:10  [ТС]
xellan24rus, спасибо за ваше терпение.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
02.10.2024, 13:48
Цитата Сообщение от Jylik Посмотреть сообщение
не могли бы вы прислать проект того, что у вас получилось?
FilterGroups.7z
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
02.10.2024, 13:51
Jylik, не уверен что полностью понял вашу задачу.
Если сделано несколько не то, то будет лучше если вы дополните мой проект в примере инициализацией нужных данных и потом покажите на них как должно всё выглядеть.
Тогда будет проще найти точное решение.
1
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
03.10.2024, 10:14  [ТС]
Элд Хасп, Проект рабочий, спасибо. Работает так как надо. Теперь стоит проштудировать ссылки с работой MVVM, биндингом и НотифиПроперти и понять как работает этот проект.
xellan24rus, Уже начал переписывать свой проект (наверное было бы проще создать его заного) ну уж начал...
код становится значительно меньше....хех....
Спасибо вам
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
03.10.2024, 11:32
Цитата Сообщение от Jylik Посмотреть сообщение
и НотифиПроперти и понять как работает этот проект
В моём проекте не используется INPC.
Я просто закинул в Решение целиком всю папку с базовыми реализациями.
Оттуда используется только реализация команд для кнопки удаления итема из фильтра.

Добавлено через 1 минуту
INPC понадобится если будет изменение состава группы после применения фильтра, чтобы известить фильтр о необходимости перепроверки элемента.
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 02:10  [ТС]
Элд Хасп, что за приколюшка с вопросиками? Воть туть и в вашем проектике тоже их полно. К слову у меня обучающий материал их не понимает. А без них всё нормально компилирует.

Добавлено через 24 минуты
Видно, как автор в процессе работы допускает некоторые ошибки, как например замена ссылки с "xmlns:i="http://schemas.microsoft.com/xaml/behaviors" на "xmlns:i="clr-namespace:System.Windows.Interactivity;a ssembly=System.Windows.Interactivity"
при этом дааааа, в самом файле "MainWindow.xaml.cs" якобы становится меньше кода, но по факту-то когда дохринище, в присоеденённых классах. Так выходит, что так куда сложнее писать программку, а не легче...xellan24rus.
При этом сложно ещё пока разобраться во всём этом новом, что там понаписано.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
05.10.2024, 02:50
Цитата Сообщение от Jylik Посмотреть сообщение
что за приколюшка с вопросиками?
Null и ссылочные типы

Цитата Сообщение от Jylik Посмотреть сообщение
как например замена ссылки с "xmlns:i="http://schemas.microsoft.com/xaml/behaviors" на "xmlns:i="clr-namespace:System.Windows.Interactivity;a ssembly=System.Windows.Interactivity"
Когда-то был (насколько помню) Blend с System.Windows.Interactivity
Потом его исходный код бы открыт и предоставляется сейчас через https://www.nuget.org/packages... viors.Wpf/
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 09:57  [ТС]
Элд Хасп, спасибо, обязательно почитаю про вопросики. Вообще был в недоумении, когда впервые увидел это у вас.
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 10:40  [ТС]
Элд Хасп, не могу найти в проекте как изменить
XML
1
<Nullable>enable</Nullable>
а так же вопросики отображаются как ошибка. Как изменить версию языка C# или в чем-то ином причина о,,О :?
Миниатюры
Поиск значения колекции, в колекции другой колекции  
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 10:44  [ТС]
Элд Хасп, Да, именно, вот.
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 10:44  [ТС]
Элд Хасп, как аппнуть версию?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
05.10.2024, 11:42
Цитата Сообщение от Jylik Посмотреть сообщение
как аппнуть версию?
Здоров!
У вас проект какого типа: Core (.Net) или Framework ?
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 12:12  [ТС]
Элд Хасп, эм, Framework (скйчас перепроверил, используется 4.7.2) но так же доступен и 4.8 эть из-за него?

Добавлено через 2 минуты
Элд Хасп, но на 4.8 так же выдает ошибку, на вопросики
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
05.10.2024, 13:09
Цитата Сообщение от Jylik Посмотреть сообщение
Framework
Там нет Nullable контекста.

Или переходите на .Net.
Или удалите эти ?.
0
 Аватар для Jylik
110 / 51 / 14
Регистрация: 06.03.2012
Сообщений: 858
05.10.2024, 13:40  [ТС]
Элд Хасп, приложения для рабочего стола? Или вы про кроссплатформенные приложения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2024, 13:40

Json.net обратиться к колекции
Я получаю от браузера ответы в виде JToken. Причём в каждом ответе они естественно разные. Это кстати обычные POST или GET запросы. Получаю...

Не могу достать из колекции enum Ключи
Ключи коллекции это класс enum Side При попытки пройтись по коллекции ругается на строчку foreach (KeyValuePair&lt;Side, int&gt; entry in...

Ошибка при записи в value кнопки Id объекта с полученной колекции. Это всё в TagBilder
Не могу понять причину такой ошибки. TagBilder получает список объектов и с них формирует таблицу кнопок обнаружил что при записи...

List<List<float>> Или как оперировать коллекцией в колекции
Есть ряд точек с координатами x,y, через гипотенузу буду рассчитывать дистанцию друг от друга class CoorXY { public float...

Копирование колекции из одного ComboBox в другой
Подскажите, как скопировать колекцию из одного Combobox в другой?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Из невышедшего на форуме-2. Беседа с ИИ об олдскульных разработчиках и их методов в программировании
zorxor 23.09.2026
Друзья, этот материал не вышел на форуме, а хотя он очень и очень важный. Хотя, точнее, материал этот вышел, но оказался несовместимым с форматом форума. А тут можно, в блоге. . . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru