Есть коллекция объектов A в каждом из объектов A есть коллекция объектов B и есть просто объект B. Как с помощью LINQ получить коллекцию объектов B соединив объект B c всеми коллекциями объектов B в коллекции объектов A?
Допустим, есть типы
class B
{
}
class A
{
public List<B> BCollection = new List<B>();
}
Инициализируем их
var aCollection = Enumerable.Range(1, 10).Select(x => new A() {BCollection = Enumerable.Range(1, 10).Select(y=>new B()).ToList()});
var b = new B();
Объеденим все B типы
var unionOfB = aCollection.SelectMany(x => x.BCollection).Concat(new[] {b});
Если у вас .NET 4.7.1+, вместо Concat несколько эффективнее будет использовать Append
var unionOfB = aCollection.SelectMany(x => x.BCollection).Append(b);
Пример если типы одинаковые :
var B = new T();
var ListB = new List<T>();
var listA = new List<T>();
listA = listA.Concat(ListB).Append(B).ToList();
Пример если объекты имеют разные типы, но B наследуется от A:
private class A {}
private class B : A { }
private void Test()
{
var B = new B();
var ListB = new List<B>();
var listA = new List<A>();
listA = listA.Concat(ListB).Append(B).ToList();
}
Пример если типы разные, нет наследования и реализации одного интерфейса то просто в лист object :
var B = new B();
var ListB = new List<B>();
var listA = new List<A>();
var test = listA.Select(x => x as object).Concat(ListB.Select(x => x as object)).Append(B as object)
.ToList();
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости