У меня есть список, содержащий множество объектов с этим определением:Сравнение и слияние список объектов
Public Class Helper
Public Property UserPrincipal As UserPrincipal
Public Property Groups As New List(Of String)
Public Property Server As New List(Of String)
End Class
Предположим, один объект выглядит следующим образом:
UserPrincipal.Name = Jan
Groups = {group_1, group_2, group_3}
Server = {Server1}
И еще один:
UserPrincipal.Name = Jan
Groups = {group_1, group_3}
Server = {Server2}
Теперь я хочу проверить свойство «Группы» каждого объекта и создать новый объект, если «Группы» одного объекта содержат «G» roups "другого объекта.
Таким образом, новый список объектов должен выглядеть следующим образом:
UserPrincipal.Name = Jan
Groups = {group_1, group_2, group_3}
Server = {Server1, Server2}
Возможно ли это с помощью LINQ?
Спасибо и уважением, Jan
обновление: 10:42: Изменен тип «Server'-свойства из строки в список (строки)
Update 12:04: Позвольте мне попытаться прояснить мой вопрос. Задача состоит в сборе членов локальной группы серверов. Для этого я подключаюсь к каждому серверу с помощью нового основногоконтекста с правильными учетными данными, получаю нужную группу (это группа пользователей удаленных рабочих столов) и получаю всех членов этой группы. С помощью этой информации я заполняю упомянутый «helper'-object», содержащий userprincipal (который является членом группы), группу (группы пользователей группы удаленных рабочих столов) и имя сервера.
Итак, у меня есть n * Вспомогательные объекты, где n - количество серверов.
Теперь есть два требования: допустим, у меня есть два сервера, и server2
. Все равно, но имя сервера отличается, поэтому я хочу только один объект с свойством Server = {server1, server2}
.
И второе требование в основном похоже на первое, но: сделайте это, если свойство Groups
содержит хотя бы одну уникальную корреляцию и добавляет эту группу в список, если ее еще нет.
Не знаю, теперь ли это яснее :) Покажет короткий пример.
Объект 1:
UserPrincipal.Name = Jan
Группы = {Домен-пользователей}
Server = {} SERVER1
Объект 2:
UserPrincipal.Name = Jan
Группы = {Domain -Пользователи}
Сервер = {Сервер2}
Ожидаемое объект:
UserPrincipal.Имя = Jan
Группы = {Домен-пользователей}
Сервер = {Сервер1, Сервер2}
Пример 2:
Объект 1:
UserPrincipal.Name = Jan
Группы = {Домен-пользователей, тест -пользователей}
Server = {} sERVER1
Объект 2:
UserPrincipal.Name = Jan
Группы = {Test-пользователей}
Server = {} Сервер2
Ожидаемый объект:
UserPrincipal.Name = Jan
Группы = {Домен-пользователей, тест-пользователей}
Server = {Сервер1, Сервер2}
И последнее, Puhh:
Объект 1:
UserPrincpial.Name = Jan
Группы = {Test-пользователей}
Server = {} Сервер1
Объект 2:
UserPrincipal.Name = Jan
Группы = {Домен-пользователей}
Server = {Сервер1} или {Сервер2} и т.д. не имеет значения.
Ожидаемый результат: Свойства свойства изменения groups
совершенно разные.
Вы не можете изменить тип свойства 'Server' из строки в' List (Of string) '. Таким образом, вам нужно либо использовать список в первую очередь, либо использовать строку и конкатють все с запятой (или другим разделителем). –
Вы можете, вам просто не разрешено использовать опцию Strict On. Но учтите, что это не рекомендуется – lsteinme
Как относится к 'UserPrincipal', имеет ли та же группа одна и та же' UserPrincipal'? Или кто из группы вы хотите сохранить, первый? –