Linq преобразование List> в List - C#
Формулировка задачи:
Доброго времени суток, данный код нужно преобразовать linq выражениями и дописать выборку из
. Таким образом, что бы каждому элементу массива, присваивался элемент из списка. Т.е. 1ый массив - в него заходят 2 дефолтных параметра + кол-во первых параметров со списков.
Сам код:
List<List<double>>
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;
} Решение задачи: «Linq преобразование List> в List»
textual
Листинг программы
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));
}
}