Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4      [все]
 Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
есть массив

double[] m = new double {1,2,3,4,5,6,7,8,9}


количество элементов всегда кратно трем

хотелось бы из него получить чтото вроде

double[,] m1 = new double { {1,2,3}, {4,5,6},{7,8,9}}

//или

List<List<double>> m1 = ...


Вобщем не суть, главное чтоб разбить массив по тройкам. В цикле впринципе не сложно, но заманчиво написать это одной строкой на LINQ, ибо часто приходится.
9 ноя 18, 20:53    [21730121]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
Dima T
Member

Откуда:
Сообщений: 14347
iskatelsql
заманчиво написать это одной строкой на LINQ, ибо часто приходится.

Если надо часто, то LINQ не панацея, тот еще тормоз. Напиши свою функцию разбивки и ее используй.
9 ноя 18, 20:57    [21730124]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Dima T
iskatelsql
заманчиво написать это одной строкой на LINQ, ибо часто приходится.

Если надо часто, то LINQ не панацея, тот еще тормоз. Напиши свою функцию разбивки и ее используй.
+1
Что за линкомания все на линке писать.
9 ноя 18, 21:00    [21730127]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
ибо часто приходится.
неужели это первый библиотечный метод в проекте.
9 ноя 18, 21:01    [21730128]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Dima T
Если надо часто, то LINQ не панацея, тот еще тормоз. Напиши свою функцию разбивки и ее используй.


часто приходится писать это... я както уже привык не копипастить, хотелось бы сходу набирать. Да и любопытство, можно ли так...

а скорость значения не имеет.
9 ноя 18, 21:01    [21730129]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
уже привык не копипастить,
public static class
9 ноя 18, 21:04    [21730131]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Petro123
iskatelsql
уже привык не копипастить,
public static class


Все это здорово, но уменя считай прототипирование... Вот пришла идея - жамкаю новый проект и быстренько ее пробуем, сойдет или нет.

ЗЫ. это вы все так намекаете что так через LINQ сделать не возможно, или "синдром вахтера" включился?
9 ноя 18, 21:08    [21730133]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Linq - волшебная страна.


double[] m = new double[] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 };
 int t = 3;
 var v = (Enumerable.Range(0, m.Count()).Where(m0 => m0 % t == 0))
                .Select(kk => m.Skip(kk).Take(t).ToArray());
9 ноя 18, 22:30    [21730170]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
m.Count()-1

но и без этого работает Картинка с другого сайта.
9 ноя 18, 22:36    [21730176]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Petro123
Dima T
пропущено...

Если надо часто, то LINQ не панацея, тот еще тормоз. Напиши свою функцию разбивки и ее используй.
+1
Что за линкомания все на линке писать.

Красиво же!
9 ноя 18, 22:53    [21730182]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Cat2,

Спасибо, работает, долго вкуривать пришлось как именно... (я нуб)


Petro123
Что за линкомания все на линке писать.


дануваснафиг, удобно же.

Вы за что боретесь то? за производительность? запускал пустой цикл - загрузка проца 13 поцентов... ну и где тут производительность, на сях пустой цикл все бы сожрал...
9 ноя 18, 23:09    [21730188]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Cat2
Красиво же!
гдето читал что MS не рекомендует увлекаться).
Ссыль не найду. Не знал тогда что не поверите)
9 ноя 18, 23:22    [21730194]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
на сях пустой цикл все бы сожрал...
зуб даю что внутри linq цикл)
9 ноя 18, 23:23    [21730197]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
iskatelsql
дануваснафиг.

Ну что Вы так сразу озлобились и ругаться начали? Еще и "Вахтерами" всех обозвали. Народ считает, что линку не надо пихать везде и это правильное мнение. Картинка с другого сайта.
9 ноя 18, 23:25    [21730198]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
долго вкуривать пришлось как именно...
вот именно.
В java тоже грешат многострочием, но оправдание что любой нуб должен код понимать.
9 ноя 18, 23:25    [21730200]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Cat2
озлобились
не. Он по доброму. Пятница)
9 ноя 18, 23:27    [21730204]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Petro123
iskatelsql
на сях пустой цикл все бы сожрал...
зуб даю что внутри linq цикл)

Конечно. Skip(s).Take(t) - это цикл for (int i=s; i<s+t; i++)
9 ноя 18, 23:28    [21730205]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Cat2
Народ считает


ну е*ана... народ считает. те кто писал linq тоже считал... что надо написать.

отстаньте от нуба со соим холиваром!
9 ноя 18, 23:28    [21730206]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Ясно, пятница...

я написал, что запускал пустой цикл что в теории должно съесть все ресурсы, но шарп ест только процентов 13. и заставить его есть больше мне не удалось.
9 ноя 18, 23:31    [21730208]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
iskatelsql
Ясно, пятница...

я написал, что запускал пустой цикл что в теории должно съесть все ресурсы, но шарп ест только процентов 13. и заставить его есть больше мне не удалось.

o! Для сжирания всех ресурсов запустите эти циклы в потоках, которые нужно делать в бесконечных циклах

Пользователи будут приятно удивлены уже на 1000 потоков
9 ноя 18, 23:50    [21730220]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
но заманчиво написать это одной строкой на LINQ
боги дали нам IEnumerable<T> и методы расширения. Напиши свой.
9 ноя 18, 23:52    [21730223]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
iskatelsql
Cat2
Народ считает


ну е*ана... народ считает. те кто писал linq тоже считал... что надо написать.

отстаньте от нуба со соим холиваром!

Ответ дан, теперь, по традиции, можно и похоливарить Картинка с другого сайта.
9 ноя 18, 23:56    [21730228]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
iskatelsql
Ясно, пятница...

я написал, что запускал пустой цикл что в теории должно съесть все ресурсы, но шарп ест только процентов 13. и заставить его есть больше мне не удалось.

plink, .asparallel() - сожрет все 100%))
10 ноя 18, 00:50    [21730252]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
Где-то в степи
Member

Откуда: Под Таганрогом
Сообщений: 4322
Старый солдат aray.copy as ровняйсь смирно + yeld по потребностям даст всем просраться..
10 ноя 18, 06:56    [21730303]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
Dima T
Member

Откуда:
Сообщений: 14347
iskatelsql
Petro123
public static class

внутри
Shocker.Pro
IEnumerable<T> и методы расширения. Напиши свой.

И ты уже не пользователь LINQ, а можно сказать соавтор
10 ноя 18, 08:52    [21730316]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Dima T
iskatelsql
Petro123
public static class

внутри
Shocker.Pro
IEnumerable<T> и методы расширения. Напиши свой.

И ты уже не пользователь LINQ, а можно сказать соавтор

+1)
10 ноя 18, 09:52    [21730321]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var _array = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            var result = _array.Select((val, ind) => new { v = val, i = ind }).GroupBy(x => x.i / 3);
        }
    }
}
12 ноя 18, 10:20    [21731448]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Агнец за бортом,

Однако тут не массив массивов, а массив анонимных классов
13 ноя 18, 19:52    [21733534]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Cat2,

Ну вот, теперь к Select-у поставь себе в план и GroupBy к изучению.
13 ноя 18, 23:10    [21733643]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
fkthat
Member

Откуда:
Сообщений: 1754
int[] range = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

var result = range
    .Select((item, index) => new { item, index })
    .GroupBy(x => x.index / 3)
    .Select(x => x.Select(y => y.item).ToArray())
    .ToArray();
20 ноя 18, 09:47    [21738744]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
Dima T
Member

Откуда:
Сообщений: 14347
static class Program    {

	public static IEnumerable<int[]> By3 (this int[] a){
		for(int i = 0; i < a.Length; i += 3) {
			var r = new int[a.Length - i > 3 ? 3 : a.Length - i];
			r[0] = a[i];
			if(i+1 < a.Length) r[1] = a[i+1];
			if(i+2 < a.Length) r[2] = a[i+2];
			yield return r;
		}
	}

	static void Main(string[] args)
	{
		var arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		foreach(var a in arr.By3()) {
			foreach(var i in a) Console.Write(i + " ");
			Console.WriteLine("");
		}
	}
}
20 ноя 18, 10:42    [21738795]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
закину свои 5 копеек :)
class Program
{
    static void Main(string[] args)
    {
        IEnumerable<int> sourceEnumerable = Enumerable.Range(0, 86);
        IEnumerable<IEnumerable<int>> split = sourceEnumerable.Splite(5);
        foreach (IEnumerable<int> bucket in split)
        {
            Console.Write("{ ");
            foreach (int i in bucket)
            {
                Console.Write($"{i:000} ");
            }
            Console.WriteLine("}");
        }
        Console.ReadKey();
    }
}

public static class EnumerableSplitter
{
    /// <summary> Разбивает перечисление на перечисления меньшего размера и возвращает пачками\корзина </summary>
    /// <param name="source">Исходное перечисление</param>
    /// <param name="bucketCapacity">Размер пачки\корзины</param>
    /// <returns>Перечисления пачек\корзин</returns>
    public static IEnumerable<IEnumerable<T>> Splite<T>(this IEnumerable<T> source, int bucketCapacity)
    {
        if (bucketCapacity < 1) throw new ArgumentOutOfRangeException(nameof(bucketCapacity));

        using (IEnumerator<T> enumerator = source.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                yield return GetBucket(enumerator, bucketCapacity);
            }
        }
    }

    private static IEnumerable<T> GetBucket<T>(IEnumerator<T> enumerator, int bucketCapacity)
    {
        int count = 0;
        do
        {
            yield return enumerator.Current;
        }
        while (++count < bucketCapacity && enumerator.MoveNext());
    }
}
20 ноя 18, 12:08    [21738901]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
iskatelsql
но заманчиво написать это одной строкой на LINQ,


Картинка с другого сайта.
20 ноя 18, 12:15    [21738916]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Агнец за бортом
iskatelsql
но заманчиво написать это одной строкой на LINQ,


Картинка с другого сайта.

))
Для глупых задачек "поделить все на три" нету linq в одну строку.
20 ноя 18, 12:21    [21738928]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
смешно им, прост я привык хорошему...

на питоне это было бы

l = [1,2,3,4,5,6,7,8,9]

res = zip(*[iter(l)] * 3)
20 ноя 18, 12:50    [21738985]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
смешно им, прост я привык хорошему...
Тебе предложили несколько вариантов именно на Linq и именно в одну строку. Чем ты остался недоволен?
20 ноя 18, 12:56    [21738996]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Shocker.Pro
Чем ты остался недоволен?


Кто сказал что я недоволен? Я так, пофлудить за компанию.
20 ноя 18, 12:57    [21738997]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
К примеру, вот задачка, которая решается на Linq в одну строку
"Дан текст - слова из строчных английских букв. Напечатать все согласные буквы, которые входят только в одно слово."
На питоне получится?
20 ноя 18, 12:58    [21738998]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
Я так, пофлудить за компанию.
ты - ТС, не получится пофлудить за компанию )
20 ноя 18, 12:59    [21739000]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Shocker.Pro
"Дан текст - слова из строчных английских букв. Напечатать все согласные буквы, которые входят только в одно слово."


эээ, после запятой не понял...

и у меня с циферками в основном все связано. с текстом побуквенно и не приходилось никогда, так что незнаю.
20 ноя 18, 13:02    [21739011]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
эээ, после запятой не понял...
в предложении несколько слов. Есть буквы, которые встречаются только в одном из этих слов.

iskatelsql
и у меня с циферками в основном все связано. с текстом побуквенно и не приходилось никогда, так что незнаю.
А в чем разница между массивом целых чисел и массивом целых чисел, которые представляют собой коды букв?
20 ноя 18, 13:05    [21739017]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
смешно им, прост я привык хорошему...
тогда придума1 более жизненные задачи.
Чем "А и Б сидели на трубе".
20 ноя 18, 13:07    [21739019]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Petro123
тогда придума1 более жизненные задачи.

Ну это очень жизненная задача, каждый раз рисуя очередную ф-цию не отпускает ощющение что я делаю все зря, а вопрос можно решить одной хитрой строчкой...


Shocker.Pro,

да фиг его знает, прост неестественность задачи смущает. студентов подобным гоняют, но в жизни я себе слабо представляю зачем стоит искать согласную букву...
20 ноя 18, 13:14    [21739025]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Petro123
Для глупых задачек "поделить все на три" нету linq в одну строку.


Во первых - есть.
Во вторых - что хвостовские замашки?

iskatelsql

res = zip(*[iter(l)] * 3)




Нефига-се к "хорошему". Это весь питон такой?
20 ноя 18, 13:24    [21739040]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
какой сакральный смысл писать код в 1 строку?
качество читаемости это не дает, производительности это, как правило, не дает, а может даже на оборот, размер файла уменьшается, но если следовать принципам Solid то он и без этого большим не будет.
я не агитирую, но мне бы хотелось понять, почему автор считает, что писать в 1 строку, это хорошо, а в 20 строк, это плохо?
с точки зрения вызова, на много будет понятнее, если будет написано

Массивы = РазбейМнеМассив(исходныйМассив, по 10 штук);
чем:
Массивы = СкройАнонимныйТип(СгруппируйЭлементыПоИндексу(ВерниЭлементыСИндексом(Исходный массив), по 10 штук))
или цепочкой
Массивы = исходныйМассив.ВерниЭлементыСИндексом.СгруппироуйЭлементы.СкройАнонимныйТип .
При этом где основной аргумент "По 10 штук"? он где то внутри выражения группировки...

и это при том, что мне нужно заранее, либо знать количество элементов, либо аллоцировать кучу массивов, или использовать группировку которая мягко говоря не быстрее, я уже молчу про то, что надо при этом еще и делить.

Если вы написали класс который решает вашу задачу, то вызов метода из этого класса будет меньше, лаконичнее и понятнее, чем цепочка Linq вызовов, которая сама по себе не как не отражает те данные, которые должна вернуть и мне как человеку незнакомому с вашим кодом придется поработать головой, чтоб понять, что вообще происходит. Сама реализация этого класса может быть на чем угодно, хоть на том же Linq. И переделать этот код будет значительно проще.
20 ноя 18, 13:26    [21739043]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Агнец за бортом
Во вторых - что хвостовские замашки?
не дай бог нам быть тут одинаковыми).
20 ноя 18, 13:30    [21739048]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Roman Mejtes
но мне бы хотелось понять, почему автор считает,


В - выразительность.
20 ноя 18, 13:35    [21739055]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Roman Mejtes
, лаконичнее и понятнее, чем цепочка Linq вызовов,

Мало практики.

Roman Mejtes
придется поработать головой,

Вообще не лишне.


Roman Mejtes
И переделать этот код будет значительно проще.

Пишите, чтоб не переделывать. Что за мания, переделывать и переопределять?
20 ноя 18, 13:36    [21739057]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
Ну это очень жизненная задача, каждый раз рисуя очередную ф-цию
обчно программист на ранг выше и ниже смотрит.
Обычно такие задачи это нижний системный уровень
iskatelsql
Вобщем не суть, главное чтоб разбить массив по тройкам.

Т.е. linq не применяют, а ты его в тему вставил.
20 ноя 18, 13:41    [21739065]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Petro123
Т.е. linq не применяют, а ты его в тему вставил.


Вставил по двум причинам.

1 мне показалось что кроме как на нем это одной строчкой не сделать
2 я только изучаю, и примеры, которые ближе к моим задачам не лишние
20 ноя 18, 13:56    [21739097]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iskatelsql
как на нем это одной строчкой не сделать
когда паровозом несколько операторов после точки это же не одна строка по смыслу. Конвейер?
20 ноя 18, 14:03    [21739113]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
да фиг его знает, прост неестественность задачи смущает. студентов подобным гоняют, но в жизни я себе слабо представляю зачем стоит искать согласную букву...
Это студенческая задача, но приемы, применимые для ее решения, близки к реальным задачам.
20 ноя 18, 14:03    [21739115]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Petro123
iskatelsql
как на нем это одной строчкой не сделать
когда паровозом несколько операторов после точки это же не одна строка по смыслу. Конвейер?

Я к тому что иногда циклом красивее чем куча в конвейере.
А иногда наоборот).
20 ноя 18, 14:07    [21739121]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Агнец за бортом
Во вторых - что хвостовские замашки?

А чувство юмора есть? :)

На самом деле у меня это психологическое чтоль... такая простая задача должна иметь простое решение, у меня включается паранойя и я судорожно начинаю перелистывать мануалы, где чего пропустил, даже забивая на основную задачу :)
20 ноя 18, 14:07    [21739122]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Petro123
что иногда циклом красивее

Никогда. Или докажи обратное.


iskatelsql
А чувство юмора есть? :)

Не в этом разделе. Тут с этим глухо.


iskatelsql
такая простая задача должна иметь простое решение,

Всё правильно, так она и имеет. Несколько операторов LINQ-а.
20 ноя 18, 14:19    [21739136]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Агнец за бортом
Никогда. Или докажи обратное.
может наоборот. Ты покажешь противопоказания пихания linq во все дыры.
20 ноя 18, 14:32    [21739157]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Petro123
Я к тому что иногда циклом красивее чем куча в конвейере.


Ну а чего трендишь тогда? Показать ничего не можешь, но мнение имеешь?
20 ноя 18, 14:50    [21739176]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
C# многословен.

Без GroupBy (почти одна строчка)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var _array = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };           

            var _divider = 3;

            var result = _array.Aggregate<int, IEnumerable<IEnumerable<int>>>(new int[][] { new int[] { } }, (acc, val) =>

            acc.Where(z => z.Count() == _divider).Union(new[] { (acc.Where(x => Enumerable.Range(1, _divider - 1).Contains(x.Count())).FirstOrDefault() ?? new int[] { }).Union(new[] { val }) }));
        }
    }
}
20 ноя 18, 15:23    [21739228]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Агнец за бортом
Показать ничего не можешь, но мнение имеешь?
гениально! Мнение иметь можно только после показа)).
Продолжай. Мы слушаем.
20 ноя 18, 15:31    [21739241]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
Агнец за бортом
C# многословен.

Без GroupBy (почти одна строчка)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var _array = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };           

            var _divider = 3;

            var result = _array.Aggregate<int, IEnumerable<IEnumerable<int>>>(new int[][] { new int[] { } }, (acc, val) =>

            acc.Where(z => z.Count() == _divider).Union(new[] { (acc.Where(x => Enumerable.Range(1, _divider - 1).Contains(x.Count())).FirstOrDefault() ?? new int[] { }).Union(new[] { val }) }));
        }
    }
}

выглядит не очень, Union() x 2, Contains(), Enumerable.Range(), Count(), сдается мне, работать будет это адище очень медленно.
А если, исходными данными будет не массив в памяти, а какой нибудь recordset из базы, то я даже представить себе боюсь, как это будет работать
20 ноя 18, 15:46    [21739275]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Roman Mejtes
выглядит не очень,


Это обфускация. o_O
20 ноя 18, 16:08    [21739316]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
fkthat
Member

Откуда:
Сообщений: 1754
Petro123
когда паровозом несколько операторов после точки это же не одна строка по смыслу. Конвейер?



Это "fluent API".
20 ноя 18, 17:12    [21739384]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat
Petro123
когда паровозом несколько операторов после точки это же не одна строка по смыслу. Конвейер?



Это "fluent API".
неа
автор
Method chainig (цепочки) - общее название синтаксиса в ООП, в котором несколько методов вызываются один за другим.

Это API так сделано реализовано. Не декларативно.
20 ноя 18, 17:39    [21739409]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat,
автор
Можно выделить то, что использование такого синтаксиса экономит время. Не считаю, что это стоит использовать часто. Такие классы по мере возрастания сложности становятся нечитабельными.
ну а где предел сложности у всех индивидуально))
20 ноя 18, 17:49    [21739417]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
fkthat
Member

Откуда:
Сообщений: 1754
Petro123
неа
автор
Method chainig (цепочки) - общее название синтаксиса в ООП, в котором несколько методов вызываются один за другим.

Это API так сделано реализовано. Не декларативно.


https://en.wikipedia.org/wiki/Fluent_interface
21 ноя 18, 19:30    [21740530]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat, ОК
Убедил))
автор
Свободный интерфейс обычно реализуется путем использования цепочки методов
21 ноя 18, 20:03    [21740557]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Roman Mejtes
Агнец за бортом
C# многословен.

Без GroupBy (почти одна строчка)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var _array = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };           

            var _divider = 3;

            var result = _array.Aggregate<int, IEnumerable<IEnumerable<int>>>(new int[][] { new int[] { } }, (acc, val) =>

            acc.Where(z => z.Count() == _divider).Union(new[] { (acc.Where(x => Enumerable.Range(1, _divider - 1).Contains(x.Count())).FirstOrDefault() ?? new int[] { }).Union(new[] { val }) }));
        }
    }
}


выглядит не очень, Union() x 2, Contains(), Enumerable.Range(), Count(), сдается мне, работать будет это адище очень медленно.
А если, исходными данными будет не массив в памяти, а какой нибудь recordset из базы, то я даже представить себе боюсь, как это будет работать

Однако не выдает то, что надо. В первом измерении уже 4 каких-то объекта.

Что мне еще местный гурии посоветую изучить?

Вариации на тему со скрытым циклом (Enumerable.Range)

var m = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var t = 3;
            var result0 = Enumerable.Range(0, m.Count() / t).Select(k=> m.Skip(k * t).Take(t).ToArray());
            var result1 = Enumerable.Range(0, m.Count() / t).Select(k => new double[] { m[k], m[k+1], m[k+2] });
21 ноя 18, 21:11    [21740588]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Агнец за бортом
iskatelsql
А чувство юмора есть? :)

Не в этом разделе. Тут с этим глухо.

Нормально тут с чувством юмора. Средняя температура не отличается от других сообществ
21 ноя 18, 21:18    [21740593]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Cat2,

result1 {1,2,3}{2,3,4}{3,4,5}
21 ноя 18, 21:29    [21740605]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
вот так работает:

var result1 = Enumerable.Range(0, m.Count() / t).Select(k => new double[] { m[k*t], m[k*t + 1], m[k*t + 2] });
21 ноя 18, 21:34    [21740608]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
iskatelsql
вот так работает:

var result1 = Enumerable.Range(0, m.Count() / t).Select(k => new double[] { m[k*t], m[k*t + 1], m[k*t + 2] });
Count(), это сразу на помойку, используйте IEnumerator, не надо мучать жопу там, где в этом нет никакого смысла.
Получите IEnumerable<IEnumerable<T>> и легко сможете получить IEnumerable<T[]> без всяких count().
При минимуме затраченных ресурсов
21 ноя 18, 21:46    [21740617]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
m.Count()
m - это массив, не надо сувать Count(), где он не требуется
21 ноя 18, 21:47    [21740618]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Roman Mejtes, Shocker.Pro,


Если вы обратите внимание, это не мой код... я туда только *t добавил...

кстати, Length чтоль использовать? а это "Получите IEnumerable<IEnumerable<T>> и легко сможете получить IEnumerable<T[]> без всяких count()." я вообще не понял
21 ноя 18, 21:50    [21740622]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
кстати, Length чтоль использовать?
Ты осознаешь, что Length - это просто свойство, которое можно просто прочитать, а Count() - это метод, который получит энумератор и переберет через него все ячейки массива, чтобы узнать количество элементов, которое и так лежит в Length?

Конечно, многие задачи не имеют критичности в производительности, но не до такой же степени!
21 ноя 18, 22:26    [21740645]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Shocker.Pro
Ты осознаешь, что Length - это просто свойство, которое можно просто прочитать


Догадывался, но конкретных подтверждений не видел, кто его знает как оно внутри устроено... Теперь будем знать
21 ноя 18, 22:28    [21740647]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
Shocker.Pro
iskatelsql
кстати, Length чтоль использовать?
Ты осознаешь, что Length - это просто свойство, которое можно просто прочитать, а Count() - это метод, который получит энумератор и переберет через него все ячейки массива, чтобы узнать количество элементов, которое и так лежит в Length?

Конечно, многие задачи не имеют критичности в производительности, но не до такой же степени!

Count() проверяет типы на ICollection<T>, IList<T> наследует ICollection<T>, по этому если делать для них, то так не будет работать, но к массивам это не относится
21 ноя 18, 22:42    [21740654]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
iskatelsql
Roman Mejtes, Shocker.Pro,


Если вы обратите внимание, это не мой код... я туда только *t добавил...

кстати, Length чтоль использовать? а это "Получите IEnumerable<IEnumerable<T>> и легко сможете получить IEnumerable<T[]> без всяких count()." я вообще не понял

Уже кидал пример:
class Program
{
    static void Main(string[] args)
    {
        IEnumerable<int> sourceEnumerable = Enumerable.Range(0, 86);
        IEnumerable<int[]> split = sourceEnumerable.Split(3).Select(p => p.ToArray());
        foreach (int[] bucket in split)
        {
            Console.Write("{ ");
            foreach (int i in bucket)
            {
                Console.Write($"{i:000} ");
            }
            Console.WriteLine("}");
        }
        Console.ReadKey();
    }
}

public static class EnumerableSplitter
{
    /// <summary> Разбивает перечисление на перечисления меньшего размера и возвращает пачками\корзина </summary>
    /// <param name="source">Исходное перечисление</param>
    /// <param name="bucketCapacity">Размер пачки\корзины</param>
    /// <returns>Перечисления пачек\корзин</returns>
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int bucketCapacity)
    {
        if (bucketCapacity < 1) throw new ArgumentOutOfRangeException(nameof(bucketCapacity));

        using (IEnumerator<T> enumerator = source.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                yield return GetBucket(enumerator, bucketCapacity);
            }
        }
    }

    private static IEnumerable<T> GetBucket<T>(IEnumerator<T> enumerator, int bucketCapacity)
    {
        int count = 0;
        do
        {
            yield return enumerator.Current;
        }
        while (++count < bucketCapacity && enumerator.MoveNext());
    }
}
21 ноя 18, 22:46    [21740655]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
iskatelsql
Догадывался, но конкретных подтверждений не видел, кто его знает как оно внутри устроено... Теперь будем знать

Нетрудно ж посмотреть исходники - https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,41ef9e39e54d0d0b
21 ноя 18, 22:52    [21740657]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
LR,

я к тому что эта Length вполне могла бы содержать тотже самый Count в get.
21 ноя 18, 22:56    [21740659]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
я к тому что эта Length вполне могла бы содержать тотже самый Count в get.
Не могла. Очевидно, Linq появился в .Net гораздо позже, чем массивы. Ну и стоило бы понимать саму суть массивов.
21 ноя 18, 23:04    [21740669]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Shocker.Pro,

я и не про Linq Count а про то что этот Length из себя представляет. некоторую переменную которая обновляется при всех операциях с массивом, замедляя эти операции, или всетаки пересчет элементов при обращении к свойству.

а если пересчет, то какая нафик разница Linq это пересчет или нет...
21 ноя 18, 23:08    [21740674]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
iskatelsql,

Метод get свойства Array.Length имеет атрибут [MethodImpl(MethodImplOptions.InternalCall)]
https://referencesource.microsoft.com/#mscorlib/system/array.cs,42e9b7616956cf94

Т.е., вероятно, это свойство реализовано на уровне операционки, а значит, быстрей в дотнете все-равно никак не сделаешь...
21 ноя 18, 23:13    [21740677]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
которая обновляется при всех операциях с массивом,
Это при каких же операциях она обновляется?
21 ноя 18, 23:15    [21740679]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Shocker.Pro
iskatelsql
которая обновляется при всех операциях с массивом,
Это при каких же операциях она обновляется?

Да, действительно))
21 ноя 18, 23:22    [21740683]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Shocker.Pro
iskatelsql
которая обновляется при всех операциях с массивом,
Это при каких же операциях она обновляется?


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

я честн не заморачивался с этим, в моих нынешних задачах масивы пару сотен элементов, так что затраты времени на оптимизацию не окупятся. так, на будушее спросил
21 ноя 18, 23:23    [21740684]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3658
Shocker.Pro
iskatelsql
которая обновляется при всех операциях с массивом,
Это при каких же операциях она обновляется?

даже если речь идет про Count, получить значение поля, это не то же самое, что перечислить все элементы,
в первом случае сложность O(1), во втором O(n). Человек какую то хрень несет и не понятно, чего хочет, вариантов дали вагон и маленькую тележку
21 ноя 18, 23:24    [21740685]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
iskatelsql
Member

Откуда:
Сообщений: 799
Roman Mejtes
и не понятно, чего хочет


Странно у вас с пониманием... Я чего хотел давно получил, и проехал эту задачу. А вы тут все пишете, пишете, мне уведомления приходят, вот и я чтото пишу Картинка с другого сайта.
21 ноя 18, 23:26    [21740686]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
так что затраты времени на оптимизацию не окупятся. так, на будушее спросил
Да, преждевременная оптимизация - зло, но это когда ты морочишься и выдумываешь новый код, а когда нужно просто использовать свойство вместо перечисления - это не оптимизация - это просто здравый смысл.

В Linq легко накосячить, устроив, например, цикл в цикле. Или замыкание на переменную цикла. Так что нужно четко понимать, что такое перечисление и как оно работает.
21 ноя 18, 23:27    [21740689]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 21183
iskatelsql
мне уведомления приходят,
Отпишишь. Зайдешь через полгодика, перечитаешь 20 страниц и норм.
21 ноя 18, 23:28    [21740690]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать / разбить массив на массивы "по три"?  [new]
fkthat
Member

Откуда:
Сообщений: 1754
Shocker.Pro
m - это массив, не надо сувать Count(), где он не требуется


LINQ в этом плане оптимизирован - в своих потрохах он распознает что это массив и при вызове Count() не будет пересчитывать всю коллекцию, а сразу вызовет Length - сам проверял когда-то по исходникам.
22 ноя 18, 06:35    [21740749]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fkthat
Shocker.Pro
m - это массив, не надо сувать Count(), где он не требуется


LINQ в этом плане оптимизирован - в своих потрохах он распознает что это массив и при вызове Count() не будет пересчитывать всю коллекцию, а сразу вызовет Length - сам проверял когда-то по исходникам.
это круто, но мое имхо в том, что не надо бы смешивать работу с массивами и коллекциями в один api.
Все таки не бейсик у нас.
22 ноя 18, 07:24    [21740760]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Cat2
Однако не выдает то, что надо. В первом измерении уже 4 каких-то объекта.


Каких-то объекта! Картинка с другого сайта.

Итак (крещендо), четыре каких-то объекта:

[1,2,3]
[4,5,6]
[7,8,9]
[10]

Cat2
Что мне еще местный гурии посоветую изучить?

Вот это деловой разговор.
Select и GroupBy уже осилены?
22 ноя 18, 09:53    [21740854]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Агнец за бортом
Вот это деловой разговор.
Select и GroupBy уже осилены?

Нет пока. Я по алфавиту иду. Начал изучать Aggregate
22 ноя 18, 17:45    [21741765]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Агнец за бортом
Каких-то объекта! Картинка с другого сайта.

Итак (крещендо), четыре каких-то объекта:

[1,2,3]
[4,5,6]
[7,8,9]
[10]


Пианиссимо, однако

4 и 5 в объекте first
6 - в объекте second. Добраться до них непросто

К сообщению приложен файл. Размер - 45Kb
22 ноя 18, 18:14    [21741825]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
iskatelsql
Cat2,

result1 {1,2,3}{2,3,4}{3,4,5}

Вот это по нашему, по-пацански!
22 ноя 18, 18:21    [21741844]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Cat2,

Обыкновенный функциональный подход.

С GroupBy самый изящный способ.
22 ноя 18, 18:52    [21741916]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145678
Агнец за бортом
Cat2,

Обыкновенный функциональный подход.

С GroupBy самый изящный способ.

Вы мне напишите как после этого подхода получит второй элемент первого массива, из вычисленного result
22 ноя 18, 19:07    [21741953]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли с помощью LINQ преобразовать  [new]
Агнец за бортом
Member

Откуда:
Сообщений: 1318
Cat2
Агнец за бортом
Cat2,

Обыкновенный функциональный подход.

С GroupBy самый изящный способ.

Вы мне напишите как после этого подхода получит второй элемент первого массива, из вычисленного result


Ты это... Серьезно? o_O
22 ноя 18, 19:27    [21741992]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / WinForms, .Net Framework Ответить