169 похожих чатов

Всем привет! Вопрос по выборке уникальных значений. Есть несколько

файлов xml такого вида.

<?xml version="1.0" encoding="utf-8"?>
<Parent>
<props>
<DisplayName>app1</DisplayName>
</props>
<guid>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874483"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874484"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874485"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874486"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874487"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874488"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874489"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874490"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874491"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874492"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874493"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874494"/>
</guid>
</Parent>

<?xml version="1.0" encoding="utf-8"?>
<Parent>
<props>
<DisplayName>app1</DisplayName>
</props>
<guid>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874483"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874484"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874485"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874486"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874487"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874488"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874489"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874490"/>
</guid>
</Parent>

DisplayName мб одинаковый, а список гуидов частично совпадать. При совпадении DisplayName в разных файлах нужно вывести список уникальных гуидов и соответствующих им DisplayName.

Я хожу вокруг да около втч select -unique и group, но не могу сообразить, как это сделать.

$files = Get-ChildItem -Force "xml*.xml"
foreach ($file in $files) {
$xml = [xml] (Get-Content ($file).FullName)
$name = $xml.Parent.props.displayname
$guids = $xml.Parent.guid.Class.id
foreach ($guid in $guids) {
Write-Host $name $guid $аppname
}
}
Write-Host выводит не уникальное кнч.

Я смог запихать это в хэш таблицу, потому что она по натуре своей принимает только уникальные значения. Но это некрасиво, ошибки приходится подавлять.

Подскажите простой и эффективный способ, плиз.

4 ответов

67 просмотров

Ну, через Compare-Object массивы сравнивают на intersect. Также можно с помощью GroupBy из LINQ и Count по аналогии с SQL.

Vadim-Sterkin Автор вопроса
Vadim-Sterkin Автор вопроса

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
3
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Карта сайта