Вы можете использовать System.Linq
методы расширения Union
(чтобы получить объединение двух списков) вместе с Where
и All
, чтобы отфильтровать элементы, которые вы не хотите включать в первый список: [ 1113]
var result = list2.Union(list1.Where(l1 => list2.All(l2 => l2.ParentId != l1.Id)));
Но обратите внимание, что Union
будет использовать метод Equals
класса, чтобы определить, совпадают ли два элемента (который по умолчанию является эталонным сравнением), поэтому вам придется переопределить Equals
и GetHashCode
для удаления дубликатов (где дубликат будет определен вами, в этом случае, я думаю, будет определено, где совпадают свойства Id
двух элементов, но, возможно, вы также включите ParentId
).
Например:
public class Item
{
public int Id { get; set; }
public int? ParentId { get; set; }
public override int GetHashCode()
{
return Id.GetHashCode();
}
public override bool Equals(object obj)
{
return Id == (obj as Item)?.Id;
}
}
И тогда пример использования будет:
public class Program
{
private static void Main(string[] args)
{
var list1 = new List<Item>
{
new Item {Id = 1, ParentId = null},
new Item {Id = 2, ParentId = null},
new Item {Id = 3, ParentId = 1}
};
var list2 = new List<Item>
{
new Item {Id = 3, ParentId = 1}
};
var result = list2.Union(list1.Where(l1 => list2.All(l2 => l2.ParentId != l1.Id)));
GetKeyFromUser("\nDone! Press any key to exit...");
}
}
Существует две опции:
Используйте Apache в качестве фронтэнда коту (использующий или mod_jk или mod_proxy_ajp), и Apache делают аутентификацию. Можно найти детали о том, как сделать, таким образом, здесь
Если Вы хотите, чтобы кот сделал аутентификацию, то Вам нужен ot, используют что-то еще, чем htpasswd файл. Существует 4 способа сохранить учетные данные пользователей - использование базы данных, JNDI/LDAP, XML-файла или поставщика JAAS. Можно читать обо всех опциях в ПРАКТИЧЕСКОМ РУКОВОДСТВЕ Конфигурации Области.
Наиболее похожим на htpasswd может быть MemoryRealm . У меня самого были проблемы, чтобы найти простой пример того, как его использовать, поэтому я размещу здесь простой пример кода:
Задайте роль, имя пользователя и пароль в tomcat-users.xml
Ваш web.xml должен содержать что-то вроде:
{{ 1}}
Мой защищенный веб-сайт
/ * { {1}} GET
POST
{{1} }
test {{1} }
BASIC
Базовая аутентификация
Тестовая роль {{ 1}} test
security-role >
Добавьте это в свой файл server.xml: