Вы можете использовать Linq
, как в следующем коде:
1 - получить отдельные серверы по идентификатору и имени:
List<Server> distinctServers = company.Servers
.GroupBy(s => new { s.ServerId, s.ServerName })
.Select(s => new Server
{
ServerId = s.Key.ServerId,
ServerName = s.Key.ServerName,
Users = s.SelectMany(x => x.Users).ToList()
}).ToList();
2 - создать новую компанию или использовать старый:
Company result = new Company
{
CompanyName = company.CompanyName,
Servers = distinctServers
};
// or
company.Servers = distinctServers;
Если у вас есть список компаний, вы можете использовать тот же код внутри select
функции:
List<Company> companies = new List<Company> { company };
List<Company> companiesWithDistinctServers = companies
.Select(c => new Company
{
CompanyName = c.CompanyName,
Servers = c.Servers.GroupBy(s => new { s.ServerId, s.ServerName })
.Select(s => new Server
{
ServerId = s.Key.ServerId,
ServerName = s.Key.ServerName,
Users = s.SelectMany(x => x.Users).ToList()
}).ToList()
}).ToList();
Я надеюсь, что эта помощь