Member 14068594 Ответов: 2

Неет, чтобы преобразовать список в список в список Флэтт - LINQ, которая с#


Мне нужно flatt list<object> с sub object в 1 Список.

у меня есть
Список<object1> В этом списке у меня есть подсписок
со свойствами
класс object1
{
идентификатор общественных инт ;
наименование общественных инт ;
публичный список элементов & lt;object2> ;
}
объект класса 2
{
идентификатор общественных инт ;
публичное строковое имя;
цена государственного десятичной ;
}

например
объект 1 имеет id = 1, имя=один со списком из 3 элементов..

мне нужно это в 1 плоском списке
Список<объект 3=""> flatt
объект 3 будет иметь

класс object3
{
идентификатор общественных инт ;
наименование общественных инт ;
общественный тип int идентификатор элемента;
публичное строковое имя;
цена государственного десятичной ;
}

мне нужно решение с помощью LINQ. TNX

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

class object1
{
    public int id;
    public int name;
    public list<object2> items;
}

class object 2
{
    public int id;
    public string name;
    public decimal price;
}

class object3
{
    public int id;
    public int name;
    public int itemid;
    public string name;
    public decimal price;
}


.....

OriginalGriff

И что же?
А что вы пробовали?
Где ты застрял?
Какая помощь вам нужна?

BillWoodruff

Тот факт, что код, который вы показываете, никогда не компилируется, указывает на то, что вы не приложили никаких усилий. Подсказка: изучите инструкцию Linq 'Select.

Если вы покажете отредактированный код, который действительно компилируется, Я помогу.

2 Ответов

Рейтинг:
2

Benktesh Sharma

Я изменил ваше поле int name в object1 и object3 на nameid, так как произойдет столкновение имен.

class object1
    {
        public int id;
        public int nameId;
        public List<object2> items;
    }

class object2
{
public int id;
public string name;
public decimal price;
}

class object3
{
    public int id;
    public int nameId;
    public int itemid;
    public string name;
    public decimal price;
}


Некоторые примеры данных здесь:

var object2List1 = new List<object2>
            {
                new object2 {id = 1, name = "1", price = 10},
                new object2 {id = 2, name = "2", price = 20},
                new object2 {id = 3, name = "3", price = 30},
            };

            var object2List2 = new List<object2>
            {
                new object2 {id = 11, name = "11", price = 11},
                new object2 {id = 21, name = "21", price = 21},
                new object2 {id = 31, name = "31", price = 31},
            };

            var object1List = new List<object1>
            {
                new object1 {id = 100, nameId = 100, items = object2List1},
                new object1 {id = 110, nameId = 110, items = object2List2},
            };


Окончательный код для построения списка object3 показан здесь. Пожалуйста, обратите внимание на использование SelectMany в приведенном выше запросе.

<pre>
var object3List = object1List
                .SelectMany(o1 =>
                    o1.items.Select(o2 => new object3()
                    {
                        id = o1.id,
                        nameId = o1.nameId,
                        itemid = o2.id,
                        name = o2.name,
                        price = o2.price

                    })).ToList();



foreach (var ol in object3List)
{
   Console.WriteLine(ol.id + "\t" + ol.nameId + "\t" + ol.itemid + "\t" + ol.name + "\t" + ol.price)
};


Рейтинг:
0

Gerry Schmitz

var object3Query = object1List
   .Select( o1 => o1.items
      .Select( o2 => new object3(){ 
         id = o1.id, 
         name = o1.name, 
         ...,
         price = o2.price }
));


Maciej Los

5ed!