Member 11381811 Ответов: 2

Как добавить в основной список данные из подсписка..


У меня есть один основной список:

List<object1> LIST1
object1 обладать свойствами: Id, Name
и
List<object2> LIST2
object2 со свойствами: Id, Name

Я хочу попробовать из linq добавить данные из list2 в list1, чтобы иметь один плоский список с обоими данными...я пытаюсь хромым способом получить это, но я хочу от linq...

Что я уже пробовал:

foreach (item in list.selectmenu(a => a.list2).toList())
{
//blalballala
}

F-ES Sitecore

Я действительно не понимаю вашего вопроса, но решение, вероятно, AddRange и, возможно, SelectMany. AddRange позволяет добавлять список элементов в список;

список1.AddRange(список2.Где(x => x.Prop = 123))

SelectMany превращает список списков в один список, если вы можете это понять :)

2 Ответов

Рейтинг:
2

OriginalGriff

Вы можете сделать это только в том случае, если object2 является производным от object1 - в противном случае вы пытаетесь вставить два разных типа объектов в один и тот же список.
Вы можете сделать это довольно легко, если они связаны:

class Fruit { }
class Apple : Fruit { }
class Banana : Fruit { }
class SampleClass
    {
    public static void Main()
        {

        List<Fruit> fruits = new List<Fruit>() { new Apple(), new Apple() };
        List<Banana> bananas = new List<Banana>() { new Banana(), new Banana() };
        fruits.AddRange(bananas);

        }
    }
Но без какой-либо связи между ними вы можете только объединить их в список класса, от которого они оба наследуются.


Maciej Los

5ed!

Member 11381811

Tnx за советами я решаю свою проблему ... ты самый лучший...

OriginalGriff

Всегда пожалуйста!

Рейтинг:
1

George Swan

Тебе бы пригодился картограф. Картограф отображает один из них Type до другого Type если имена свойств совпадают, то другие Type должен быть конструктор по умолчанию. Популярный картограф-это Автоматика тот, который используется здесь, является домашней версией, но синтаксис похож.


List<Animal> animals = new List<Animal>
           {
               new Animal(){Name="Dog",Legs=4},
               new Animal(){Name="Human",Legs=2},
               new Animal(){Name="Spider",Legs=8}

           };
           List<Animal2> animals2 = new List<Animal2>
           {
              new Animal2(){Name="Insect",Legs=6},
               new Animal2(){Name="Fish",Legs=0}

           };
           //     source   target
           Mapper<Animal2, Animal> myMapper=new Mapper<Animal2, Animal>();
           var query = animals2.Select(a => myMapper.Map(a));
           animals.AddRange(query);