Мне нужна помощь в поиске наиболее эффективного способа объединения двух коллекций в памяти с LINQ-to-Objects. В моем случае это не простое соединение или конкат, потому что некоторые элементы должны быть исключены на основе значения свойства.
Давайте использовать следующий пример (не очень реалистичный, но он иллюстрирует то, что мне нужно):
public abstract class Person
{
public String Name { get; set; }
}
public class Employee : Person
{
public DateTime? TerminationDate { get; set; }
}
public class Customer : Person
{
...
}
Обратите внимание, что Сотрудник также может быть Заказчиком.
У меня есть список сотрудников и список клиентов, и я хочу создать список всех лиц, следуя этим правилам:
- Все клиенты, которые не являются сотрудниками
- Все сотрудники, которые не являются также клиентами и не уволены (TerminationDate == null)
- Все лица, которые являются одновременно клиентами и сотрудниками, так и не уволены (TerminationDate == null)
Какой самый эффективный способ сделать это?