Re[11]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.09.21 08:37
Оценка:
Здравствуйте, vfedosov, Вы писали:


V>Чего я и ожидал собственно. Или в новых версия .Net есть "implementation of the query pattern for source type 'double[*,*]'" ?


Ты всегда можешь написать расширение
 public static class TwoDimensionalArrayEnumerable
    {
        public static IEnumerable<T> ToEnumerable<T>(this T[,] array)
        {
            for (int i = array.GetLowerBound(0); i <= array.GetUpperBound(0); i++)
            {
                for (int j = array.GetLowerBound(1); j <= array.GetUpperBound(1); j++)
                {

                    yield return array[i, j];
                }
            }
        }

        public static T[,] ToArray<T>(this IEnumerable<T> en, T[,] array)
        {
            var result = array;//(T[,]) Array.CreateInstance(typeof(T), fub, sub);
            var elemCount = array.GetUpperBound(1) - array.GetLowerBound(1) + 1;
            int ind = 0;
            foreach(T elem in en)
            {
                result[ind / elemCount, ind % elemCount] = elem;
                ind++;
            }

            return result;
        }
}


static void TestLinq()
        {
            var array2d = new double[1000, 1000];
            array2d = (from a in array2d.ToEnumerable()  select Math.Min(a * 1.5, 1.0)).ToArray(array2d);

        }


Есть прекраснейшая конструкция yield на основании которой ты можешь строить любые итераторы.
Для использования как в питоне, нужно просто сконструировать класс который будет держать данные о массиве.
Лениво
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.