Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122

Фильтрация таблицы по нескольким объектам

24.03.2024, 15:47. Показов 1514. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Есть таблица, она не маленькая и заголовков много. Мне нужно выбрать два обьекта в ней(столбца). Найти пустые в первом и в этом случае забрать значения из второго через запятую. Значения нужны уникальные.
Вот что у меня получилось, однако возвращаются в последнюю переменную не уникальные значения.
PowerShell
1
2
3
4
5
6
7
  $tab = $table | select had1, had2 | Where-Object { $_.had1 -like '' } |  select had2 -Unique
  
  
    foreach($y in $tab){
        $unknown += $y.had2 + ';'
    }
   $unknown
Если посмотреть в $tab то значения уникальны, если посмотреть в $unknown то тут перечисляются все значения из $table, тоесть не уникальные. Почему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2024, 15:47
Ответы с готовыми решениями:

Фильтрация по нескольким столбцам таблицы
Подскажите пожалуйста как реализовать фильтрацию таблицы по нескольким (более 2) столбцам таблицы. Огромное спасибо

Фильтрация таблицы по нескольким столбцам
Добрый день. Подскажите пожалуйста, как можно решить такую задачку: отфильтровать таблицу сразу по нескольким столбцам (при этом...

Фильтрация из нескольких столбцов таблицы по нескольким условиям!
Всех приветствую! Имеется файл MS Access, в нем таблица с 10-ю столбцами. Обращение к таблице через ADOTable. Искомое значение вводим...

28
2807 / 505 / 121
Регистрация: 26.09.2020
Сообщений: 959
Записей в блоге: 5
26.03.2024, 22:49
Студворк — интернет-сервис помощи студентам
Если в коде volodin661, вместо
PowerShell
1
$table = [ArrayList]::new()
использовать
PowerShell
1
$table = [System.Collections.Generic.List[OO]]::new()
то добиться ленивого можно
PowerShell
1
2
3
4
5
$ToRemove = [System.Linq.Enumerable]::Where($table, [System.Func[object, bool]] {
    param($x) ($x.price -eq 0) -or
    ($x.color -eq 'deeppurple') -or
    ($x.color -eq 'green' -and $x.cnt -eq 0)
})
но удалить из перечисляемой коллекции нельзя
PowerShell
1
2
3
foreach ($item in $ToRemove) {
    $table.Remove($item)
}
надо приземлить перечисление в коллекцию, типа $RemoveCollection = $ToRemove.ToArray(), оторвав пупок связь от изначальной коллекции
что volodin661 и сделал, изначально используя [ArrayList]

Поправьте, если не прав.
1
Нарушитель
7165 / 2334 / 353
Регистрация: 10.12.2013
Сообщений: 8,072
26.03.2024, 23:06
skouzmine,


я не разработчик компилятора;

но когда выписывал претензию powershell, рассуждал так:

есть оператор foreach, он реализует enumerator,

и операндом у enumerator в моём примере является об'ект типа 'Список',

над которым программист собирается учинить насилие - вызвать метод его ( список ) изменяющий.

компилятор это отследил и выписал мне ошибку, какбэ предполагая, что я есть тот мудак, который не даёт ему покоя

и только всё портит.

Но если предположить, что я не мудак, а просто хочу добиться своей цели, не стирая в кровь пальцы,

то вполне реально нмв для компилятора сгенерировать код, который тихо соберёт об'екты списка удалит их, как только

enumerator прокрутится до конца.

Добавлено через 10 минут
iNNOKENTIY21,

это всё так,

но код мой совсем не эффективен; метод Remove, получив object для удаления, залезет в него и потом
начнёт бродить по списку, пытаясь его там найти ( по каким критериям - хрен знает; в доке ничего нет ) и удалить.


обычный Cишный код для связного списка сделает это гораздо быстрее и понятным для автора способом.
0
507 / 160 / 49
Регистрация: 27.02.2016
Сообщений: 833
27.03.2024, 00:12
Цитата Сообщение от volodin661 Посмотреть сообщение
есть оператор foreach
спасибо попробуйте поставить пробело и вас ждет сурприз:

# NOTE: fragile syntax
# '@.split([System.Environment]::NewLine ).foreach { $table.Add([Row ...
# ~
# Unexpected token '{' in expression or statement.

так что похоже умельцы сделали секретное служебное слово
Code
1
foreach{
вообще на мой взгляд концентрация syntax sugar зашкаливает

можно по моему по дедовкис:
Code
1
2
3
4
5
6
7
8
9
10
$rawdata  =@'
много данных
'@
$table = [System.Collections.ArrayList]::new()
$chars = @([char]12,[char]10)
$rows = $rawdata.split($chars)
 
$rows |  foreach-object {
$row = $_
  $table.Add([Row]::new($row))
}

Добавлено через 3 минуты
Цитата Сообщение от volodin661 Посмотреть сообщение
вполне реально нмв для компилятора сгенерировать код, который

ConcurrentModificationException is a very common exception when working with collection classes.
гугль не умеет варть
0
2807 / 505 / 121
Регистрация: 26.09.2020
Сообщений: 959
Записей в блоге: 5
27.03.2024, 00:19
volodin661, в доках есть такое
If type T implements the IEquatable<T> generic interface, the equality comparer is the Equals method of that interface; otherwise, the default equality comparer is Object.Equals.
This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.
А чего там за Object.Equals прячется, большой хз. Но мне уже не особо интересно, особенно глядя из powerahell.
0
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
27.03.2024, 06:22  [ТС]
volodin661, А зачем удалять из таблицы данные? Когда я формулировал задачу я думал что решение будет выглядет не явным удалением каких то свойств, а просто группировкой таким образом, чтоб в результат был без этих свойств.
0
Нарушитель
7165 / 2334 / 353
Регистрация: 10.12.2013
Сообщений: 8,072
27.03.2024, 07:51
sergey020487, а как же тогда быть с этим:

Цитата Сообщение от sergey020487 Посмотреть сообщение
я хочу исключить из этой таблицы строки, в которых повторяются значения по 3м заголовкам: id name value. Не оставить уникальные, а именно исключить.
??

это была подготовка к 1-му числу месяца апреля ?
0
0 / 0 / 0
Регистрация: 10.02.2024
Сообщений: 122
27.03.2024, 08:01  [ТС]
volodin661, Да нет, не какого подвоха. Все правильно. Для меня по сути не важною удалятся они или отфильтруются, важен же результат. Мне просто интересно. По моему скромному опыту, в шеле стараются просто исключить данные фильтрами, а Вы подожли к этому вопросу именно удалением.
0
Нарушитель
7165 / 2334 / 353
Регистрация: 10.12.2013
Сообщений: 8,072
27.03.2024, 08:28
sergey020487,

я готов пойти вам ( нет, не так; Вам - вот так ) навстречу и для первого раза удалять из шелла не будем,
а просто выпишем выговор с предупреждением.

Добавлено через 12 минут
Есть такой язык, называется 'М',

в нём можно так:

Objective-C
1
2
set мойдядя('честных правил', '27/03/2024') = 'занемог'
set мойдядя('честных правил', '01/04/2024') = 'умер'
если переменная без преффикса ^ птичка, то это просто данные в памяти,
но если вот так:

Objective-C
1
2
set ^мойдядя('честных правил', '27/03/2024') = 'занемог'
set ^мойдядя('честных правил', '01/04/2024') = 'умер'
то это изменяются реальные данные в базе данных.
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
27.03.2024, 14:30
Цитата Сообщение от volodin661 Посмотреть сообщение
но всё ж сейчас модно в скриптах
если говорить о моде, сейчас уж слишком модно стало обращаться за помощью к различной гопоте (почти как в 90-е, за денежку малую все вопросы порешают... ), но это не наш метод (не мой точно, во всяком случае )

Цитата Сообщение от volodin661 Посмотреть сообщение
то вполне реально нмв для компилятора сгенерировать код, который тихо соберёт об'екты списка удалит их, как только
enumerator прокрутится до конца.
оно хоть и реально... но увы, проблемы индейцев шерифа не волнуют... так что, собственноручно и своими же инструментами, имеющимися в наличии. Пока так...

Цитата Сообщение от iNNOKENTIY21 Посмотреть сообщение
но удалить из перечисляемой коллекции нельзя
в этом и соль... буфер, последующий поиск и удаление... что выливается в накладные расходы...
Ну, а если присутствует ограничение во времени работы скриптов у ТС, то и поискать уже другие инструменты, помимо powershell.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2024, 14:30

Обращения к нескольким объектам
Имеется такая ситуация: у меня на форме распологаются десятки кнопок (button1....battonn) к ним уже присвоены разнообразные функции ...

Присвоение свойств нескольким объектам
Нужна помощь, очень нужна. Передо мной стоит задача нескольким объектам присвоить одно и тоже свойство что то типо этого. With...

Смена одного свойства нескольким объектам
Многим известно, что можно одному объекту сменить несколько свойств не обычным, а таким способом: With объект .свойство1 ...

Привязка элемента к нескольким разным объектам
В окне MainWindow есть ListBox, привязанный к коллекции объектов. И есть контейнер Frame, в который загружается страница. Текстбоксы на...

Привязка к нескольким объектам используя BindingGroups
Попытался сделать свою версию примера по ссылке, когда BindingGroup работает с двумя data object (объектами источниками данных), но он ни в...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Скрипты 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: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru