powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
7 сообщений из 7, страница 1 из 1
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784158
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типичная задача - вычислить последовательность разностей смежных значений по исходной последовательности значений. Т. е., если есть N значений, то, беря посмежно каждые два значения, можем получить N-1 разностей. Как это сделать с помощью LINQ и лямбд?

Что-то типа такого

Код: c#
1.
Select((value,index) => value[index] - value[index - 1]);



Без использования внешних переменных, чисто функциональным подходом, такую задачу можно решить?
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784161
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. нужна переменная, которая бы запоминала значение с предыдущей итерации.
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784171
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или захватить исходную последовательность в лямбду

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
Select(
                (value, index) =>
                {
                    if (index > 0)
                        return a[index] - a[index - 1];
                    else
                        return 0;
                });



Но плохо то, что нужно вернуть "заглушку" при первой итерации.


Скит сделал так . Но это свой оператор писать надо. А встроенными средствами и элегантно никак?
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784203
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм... решил по-скитовский пойти. Писать свои LINQ-расширения - это нормально.
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784236
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Типичная задача - вычислить последовательность разностей смежных значений по исходной последовательности значений. Т. е., если есть N значений, то, беря посмежно каждые два значения, можем получить N-1 разностей. Как это сделать с помощью LINQ и лямбд?

Что-то типа такого

Код: c#
1.
Select((value,index) => value[index] - value[index - 1]);




Без использования внешних переменных, чисто функциональным подходом, такую задачу можно решить?
Код: c#
1.
2.
var a = new int[] { 1, 43, 45, 5, 6 };
var result = a.Zip(a.Skip(1), (item1, item2) => item2 - item1);
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38784311
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationuser7320Типичная задача - вычислить последовательность разностей смежных значений по исходной последовательности значений. Т. е., если есть N значений, то, беря посмежно каждые два значения, можем получить N-1 разностей. Как это сделать с помощью LINQ и лямбд?

Что-то типа такого

Код: c#
1.
Select((value,index) => value[index] - value[index - 1]);




Без использования внешних переменных, чисто функциональным подходом, такую задачу можно решить?
Код: c#
1.
2.
var a = new int[] { 1, 43, 45, 5, 6 };
var result = a.Zip(a.Skip(1), (item1, item2) => item2 - item1);


Канает. Только у вас надо, грубо говоря, два прохода сделать по последовательности, а у Скита - один. Вообще, там по ссылке ещё много таких велосипедов, как у вас, понаписано. )))
...
Рейтинг: 0 / 0
LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
    #38785222
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
 var tmp = new int[] { 2, 3, 4, 5, 6, 8, 9 };
            var data = tmp.Select((x, i) => new { i, x });
            var res = data.Join(data, x => x.i, x => x.i - 1, (a, b) => a.x - b.x);
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ - из последовательности с N элементами получить последовательность с N-1 элементами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]