Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 75

Упорядочивание коллекции: объяснить вторую строку кода

08.07.2014, 02:21. Показов 814. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
C#
1
2
3
var intList = new List<int>() { 1, 2, 3 };
           
var newList = intList.OrderBy(value1 => value1);
Кто может объяснить вторую строчку кода, что она делает, как и для чего. Я понял что упорядочивает коллекцию, но не понятны лямбда выражения и сам метод.

Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2014, 02:21
Ответы с готовыми решениями:

Объяснить строку кода
Я новичок в программировании в C#. Поэтому я хотела попросить прокомментировать непонятную строку в программе и объяснить что она делает....

Объяснить строку кода
Объясните строку кода. Func&lt;string, List&lt;Car&gt;, Car&gt; Find = (string str1, List&lt;Car&gt; cars) =&gt; { return...

MVP - объяснить строку кода
using System; using System.Windows; // View namespace MVP { public partial class MainWindow : Window { ...

6
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
08.07.2014, 05:24
Можете почитать про методы расширения и обобщенные делегаты с анонимными методами.
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 75
08.07.2014, 14:58  [ТС]
Почитал, трудно понять пока. Не ясно где находится метод который занимается сортировкой и само лембда-выражение не понятно. Если бы было (x,y) => x + y, то это был бы анонимный метод, который суммирует два значения. Зачем вообще писать value1 => value1, просто вызвали бы метод OrderBy().

Добавлено через 13 минут
Вот так вот мне понятно: intList.Sort(new Comparison<int>((x, y) => y - x));

Тут перегрузка метода Sort делегатом с которым сообщен анонимный метод записанный в виде лямбда выражения...
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
08.07.2014, 16:37
Ну смотрите!

Это метод-расширение коллекции. Коллекция может содержать не только int а например

C#
1
2
3
4
5
6
7
8
9
public class MyClass
        {
            public int MyProperty { get; set; }
        }
 
//И в методах
var list = new List<MyClass>();
 
var orderedList = list.OrderBy(listItem => listItem.MyProperty);
В этом случае listItem => listItem.MyProperty это selector. С его помощью мы указываем методу на свойство, по которому нужно отсортировать.

В вашем случае сортируется лист с элементами int.
Поэтому в селекторе передаётся сам элемент листа value1 => value1
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
08.07.2014, 23:19
Makeda, если без лямбда, чтобы было понятнее, то код можно разложить на такие части.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            var intList = new List<int>() { 1, 2, 3 };
            Func<int,int> myFunc=new Func<int,int>(Func);
 
            var newList = intList.OrderBy(myFunc);
 
        }
        static int Func(int i)
        {
            //Тут реализована логика сортировки элементов по ключу (в данном случае по значению)
        }
    }
}
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 75
09.07.2014, 00:21  [ТС]
Это мы инстанцируем класс делегат, который .... тут можно чуть подробнее .... вижу что мы ему передаем в качестве аргумента функцию Func, которая реализована ниже.

Цитата Сообщение от insite2012 Посмотреть сообщение
Func<int,int> myFunc=new Func<int,int>(Func);
Так понятие - спасибо.
Цитата Сообщение от LeniumSoft Посмотреть сообщение
var orderedList = list.OrderBy(listItem => listItem.MyProperty);
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
09.07.2014, 01:07
Makeda, мы сортируем массив каких-то объектов (каких, не знаем,в данном случае - цифр), в качестве критерия для сортировки выбираем само это число.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2014, 01:07
Помогаю со студенческими работами здесь

Объяснить каждую строку кода
Console.WriteLine(); float b = a; a = a; a = b; for (int i = 0; i &lt; n; i++) ...

Компиляция/добавление кода без видимости самого кода(сложно объяснить)
Есть код по типу такого: static void Main() { Hm.Ex checker = new Hm.Ex();//Hm - namespace, Hm.Ex - class ...

Как переписать вторую строку textBox (B) новым текстом оставив первую строку неизменной?
Имеем textBox1.Text = &quot;A&quot;; textBox1.Text = textBox1.Text + Environment.NewLine + &quot;B&quot;; textBox1.Text = // //Вывод: //A //B ...

Объяснить строку кода
Объясните пожалуйста, что следует после c:=trunc(b); то я не понимаю. И почему после write в конце скобки стоит c mod 10 , почему его...

Объяснить строку кода
Подскажите, как это понять: R := L(R) / (x - x) Интересует именно суть &quot;L&quot;!!


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru