Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
6 / 3 / 3
Регистрация: 21.02.2019
Сообщений: 70

Создание списка используя LINQ

12.02.2021, 18:46. Показов 3680. Ответов 7

Студворк — интернет-сервис помощи студентам
Я знаю о существованию методов Range и Repeat в LINQ, позволяющие заполнить любой IEnumerable числовыми значениями. Однако функционал у них слишком ограничен, насколько мне известно используя их можно либо заполнить список числами от a до b, либо n-м количеством одинаковых элементов. Существует ли какой-нибудь аналогичный способ заполнить список (Например, заполнить его квадратами чисел от 1 до n)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2021, 18:46
Ответы с готовыми решениями:

Найти все конечные элементы рекурсивного списка используя Linq
Есть список List<Node>, Node содержит List<Node> Nodes, Нужно найти все Nodes где Count>0 Понятно, что можно функцию рекурсивную...

LINQ фильтрация списка
Мне нужно отфильтровать (вернуть только то что подходит под условие) массив объектов по одному из его свойству (список). Проблема то что...

List<>[] перевести в [][] используя Linq
Как перевести массив списков в массив массивов 1 строчкой?

7
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,620
12.02.2021, 18:48
Select же есть. Возводите.

C#
1
            var list = Enumerable.Range(1, 10).Select(i => i * i).ToList();
0
6 / 3 / 3
Регистрация: 21.02.2019
Сообщений: 70
13.02.2021, 07:59  [ТС]
escoult, Но тогда это не очень эффективно, не так ли? Мы сначала проходимся для создания массива, а потом для возведения чисел в квадрат. А мой вопрос заключался именно в инструменте, который позволяет сделать это за один заход
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
13.02.2021, 09:40
Aleksey1212, Что мешает создать свой метод?
C#
1
2
3
4
5
6
7
8
9
10
11
public static IEnumerable<int> RangeIterator(int start, int count)
{
    int num = 0;
    for (int i = 0; i < count; i++)
    {
        num = (start + i);
        yield return num * num;
    }
}
 
var list = RangeIterator(1, 10).ToList();
0
Жесток & Наивен
 Аватар для sanec38
483 / 188 / 91
Регистрация: 02.02.2017
Сообщений: 427
13.02.2021, 09:58
Тоже подумал о своем методе.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public static List<TResult> Foo<TResult>(int a,int b,Func<int,TResult> mutation)
        {
            if(b <= 0)
            {
                throw new ArgumentNullException("Несуществующия последовательность");
            }
            var list = new List<TResult>(a + b);
            for(int i = a; i < a + b; i++)
            {
                list.Add(mutation(i));
            }
            return list;
        }
Или можно так еще так, извертеться.
C#
1
2
            var list = Enumerable.Range(0,5)
               .Aggregate(new List<int>(),(list,x) => {list.Add(x * x); return list;});
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.02.2021, 11:43
Aleksey1212, в предложенном варианте с Range/Select это за один обход делается.
2
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
13.02.2021, 11:46
Цитата Сообщение от kolorotur Посмотреть сообщение
в предложенном варианте с Range/Select это за один обход делается.
Где можно посмотреть, то что вы утверждаете?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.02.2021, 12:32
Kazbek17, в документации методов Range и Select.
Крутите вниз, где говорится про отложенное выполнение.
Ну или можете экспериментально проверить:
C#
1
2
var smallRange = Enumerable.Range(1, 10);
var largeRange = Enumerable.Range(1, int.MaxValue);
Сравните время на выполнение метода и количество потребляемой памяти без перебора — они одинаковы.

Аналогично:
C#
1
2
var smallRange = Enumerable.Range(1, 10).Take(5).ToList();
var largeRange = Enumerable.Range(1, int.MaxValue).Take(5).ToList();
В целом большинство методов Linq обрабатывает элементы по одному; при комбинировании получается цепочка, в которой один и тот же элемент передается от одного итератора в другой.
Исключения — всякие сортировки, группировки, подсчет количества и тот же ToList, где нужны все элементы для корректной работы.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2021, 12:32
Помогаю со студенческими работами здесь

Получить последовательность символов (используя LINQ)
Даны целое число К (&gt; 0) и последовательность строк А. Получить последовательность символов, которая определяется следующим образом: для...

Получение данных из JSON используя LINQ
Всем привет, хочу понять, как можно писать запросы к файлу формата JSON и выводить их в консоль Есть вот так using...

Группировка используя LINQ + сумма стрингов
Всем привет!! Хочу реализовать отчетик* в среде 3D моделирования. Есть элемент например с именем 'V1', описанием 'Задвижка' и...

Сложная сортировка списка без LINQ
Массив A Распоряжение администрации муниципального образования город Краснодар от 22 декабря 2011 г. N 272-р Постановление...

Используя Linq найти минимум и максимум в массиве.
Привет! У меня вопрос...для C#... Пример: int n=int.Parse(Console.ReadLine()); int arr=new int; for(int i=0;i&lt;n;i++) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru