Пары цепочек в списке с помощью LINQ

У меня есть список, например, {1, 2, 3, 4, 5}

Мне нужно получить пары (используя С# LINQ):

(1, 2), (2, 3), (3, 4), (4, 5)

Странно, я не могу решить эту простую задачу, хотя я пробовал ВыбратьМного с Пропустить (я + 1), что дает мне все возможные пары, которые мне в принципе не нужны.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
3
0
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это с помощью метода Linq Почтовый индекс:

var numbers = new[] { 1, 2, 3, 4, 5 };

var pairs = numbers.Zip(numbers.Skip(1));

foreach (var pair in pairs)
{
    Console.WriteLine($"First: {pair.First}, Second: {pair.Second}");
}

Выход:

First: 1, Second: 2
First: 2, Second: 3
First: 3, Second: 4
First: 4, Second: 5

Пример выполнения: https://dotnetfiddle.net/HZuDdR

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        var list = new List<int>{1, 2, 3, 4, 5};
        var pairs = list.Take(list.Count() - 1).Select((z, index) => new
        {
            a = z, b = list[index + 1]
        }).ToList();
        pairs.ForEach(p => Console.Write("(" + p.a + "," + p.b + ") "));
    }
}

https://dotnetfiddle.net/6oXQwC

Лично я бы не стал использовать здесь ToList и всегда избегал использования List.ForEach, когда нет реальной пользы от использования стандартного цикла foreach. (почему см. здесь)

DavidG 09.04.2022 15:43

Правда, и ваше решение с зипом тоже намного чище.

Johan Nordlinder 09.04.2022 15:48

Решение Zip действительно чище, но по какой-то причине оно не работает на некоторых версиях С#.

The Bad Bat 09.04.2022 16:12

Другие вопросы по теме