Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
8 / 8 / 0
Регистрация: 08.07.2015
Сообщений: 190
1

Linq преобразование List<List<double>> в List<Array>

22.05.2017, 16:09. Просмотров 2006. Ответов 5
Метки нет (Все метки)

Доброго времени суток, данный код нужно преобразовать linq выражениями и дописать выборку из
C#
1
List<List<double>>
. Таким образом, что бы каждому элементу массива, присваивался элемент из списка. Т.е. 1ый массив - в него заходят 2 дефолтных параметра + кол-во первых параметров со списков.
Сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public List<Array> Adapt(List<List<double>> Storage, int qty, double category, double point)
            {
                var result = new List<Array>();
                var count = Stogare.Count;
 
                for (var i = 0; i < count; count++)
                {
                    var array = new double[qty + 2];
                    array[0] = category;
                    array[1] = point;
                   // здесь заполняется остальной массив
                   result.Add(array);
                }
                return result;
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2017, 16:09
Ответы с готовыми решениями:

Преобразовать List<double[]> в List<Array>
Собственно такой вот вопрос, как это сделать.

Как узнать размерность внутреннего вектора в массиве List<List<Double>>?
Добрый вечер! Уважаемые, подскажите пожалуйста, как узнать размерность внутренних строк в...

Работат с листом листов (List<List<double>>)
Имеет ли смысл такая конструкция List&lt;List&lt;double&gt;&gt;? Экземпляр-то создается, но немного подвис я,...

Преобразование List<Child> to List<Parent> и обратно
Здравствуйте, подскажите пожалуйста, как правильно реализовать преобразование списка объектов...

5
594 / 351 / 198
Регистрация: 02.06.2016
Сообщений: 598
22.05.2017, 17:29 2
C5674,
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static class Program
{
    static List<T[]> Adapt<T>(this IEnumerable<IEnumerable<T>> Storage, int Qty, params T[] Addition)
        => Storage.Select(s => Addition.Concat(s.Take(Qty)).ToArray()).ToList();
 
    static void Main()
    {
        List<List<double>> input = new List<List<double>>()
        {
            new List<double>() {1, 2, 3},
            new List<double>() {3, 4, 5},
        };
 
        List<double[]> expected = new List<double[]>()
        {
            new double[] { 11, 22, 1, 2 },
            new double[] { 11, 22, 3, 4 }
        };
 
        NUnit.Framework.Assert.AreEqual(expected, input.Adapt(2, 11, 22));
    }
}
0
8 / 8 / 0
Регистрация: 08.07.2015
Сообщений: 190
22.05.2017, 20:25  [ТС] 3
Aael, не совсем так, массив должен заполниться 2-мя дефолтными значения как у меня + qty значений, каждое из которых является 0,1,2... из каждого списка в списке. qty = кол-ву списков, поэтому такая и размерность.
0
594 / 351 / 198
Регистрация: 02.06.2016
Сообщений: 598
22.05.2017, 20:52 4
C5674, без примера не понять, к сожалению
0
8 / 8 / 0
Регистрация: 08.07.2015
Сообщений: 190
22.05.2017, 23:19  [ТС] 5
Aael,
array[qty+2] = должен заполняться следующими элементами из List<List<double>>: нулевой элемент каждого List<double>, на след итерации первый элемент из каждого List<double> и т.д. Т.е. из всех нулевых, первых, вторых... элементов списка списков, я хочу составить массив.
0
594 / 351 / 198
Регистрация: 02.06.2016
Сообщений: 598
22.05.2017, 23:59 6
C5674, зря я это делаю, но всеже:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
static class Program
{
    static List<T[]> Adapt<T>(this IEnumerable<IEnumerable<T>> Storage, int Qty, params T[] Addition)
        => Enumerable.Range(0, Qty).Select(i =>
                Addition.Concat(Storage.Select(r => r.ElementAt(i))).ToArray()
            ).ToList();
 
    static void Main()
    {
        List<List<double>> input = new List<List<double>>()
        {
            new List<double>() {1, 2, 3},
            new List<double>() {4, 5, 6},
            new List<double>() {7, 8, 9},
        };
 
        List<double[]> expected = new List<double[]>()
        {
            /* 1 < qty */ new double[] { 11, 22, 1, 4, 7 }, // {11, 22} + нулевые элементы
            /* 2 = qty */ new double[] { 11, 22, 2, 5, 8 }  // {11, 22} + первые элементы
            /* 3 > qty */
        };
            
        NUnit.Framework.Assert.AreEqual(expected, input.Adapt(2, 11, 22));
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2017, 23:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Конвертировать один элемент из List<List<Class>> в list и string
Как можно перевести один выбранный элемент из List&lt;List&lt;Data&gt;&gt; myList в list и string? Например,...

Преобразование list<type1> в list<type2>
Здравствуйте, недавно начал изучать с#. Накопилось много вопросов) но сейчас интересует один...

Перевод List<List<double>> в double[][]
Есть ли короткая запись перевода List&lt;List&lt;double&gt;&gt; в double? Я имею в виду перевод без цикла,...

Вывести список из метода. Ошибка Неявное преобразование типа "System.Collections.Generic.List<double>" в "double"
Добрый день. Есть функция в библиотеке классов, расчеты в которой приводят к получению списка: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.