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

Как работает OrderBy

24.05.2012, 21:33. Показов 8963. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
функция класса
C#
1
2
3
4
        public Товары[] SortByCena()
        {
            return a.OrderBy(q => q.Cena).ToArray();
        }
как правильно её в программе вызвать что бы отсортировалось
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2012, 21:33
Ответы с готовыми решениями:

Как работает метод Enumerable.OrderBy?
using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester {...

Как происходит перемешивание элементов последовательности, если передать в orderby экземпляр класса random?
var rnd = new Random(); var b = a.OrderBy(i => rnd.Next()); Видел в интернете такой вариант перемешивания элементов, но не могу...

Не работает Me.OrderBy
Ситуация такая: Сделал ленточную форму, на некоторые элементы которой повесил на клик Me.OrderBy = 'Имя поля связанной таблицы' ...

21
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
24.05.2012, 22:37
C#
1
2
3
4
public static Товары[] SortByCena()
{
    return a.OrderBy(q => q.Cena).ToArray();
}
C#
1
2
3
4
5
public static void Main()
{
    Товары[] arr = Товары.SortByCena();
    //...
}
0
1 / 1 / 0
Регистрация: 26.12.2010
Сообщений: 65
24.05.2012, 23:08  [ТС]
пишет "не содержит определения для "SortByCena" " хотя в классе это свойство есть и стоит в паблик
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
24.05.2012, 23:27
В каком именно классе метод?
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
24.05.2012, 23:32
в классе Склад
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
24.05.2012, 23:37
C#
1
Товары[] arr = Склад.SortByCena();
или
C#
1
2
var с = new Склад(/*параметры*/);
Товары[] arr = с.SortByCena()
я ведь не знаю откуда берется "a".
Если что опять не так, кидайте код.
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
24.05.2012, 23:54
return a.OrderBy(q => q.Cena).ToArray();/// вот тут ошибка q.Cena Ошибка(Ссылка на объект не указывает на экземпляр объекта) подскажите что не так
Вложения
Тип файла: docx using System.docx (13.3 Кб, 12 просмотров)
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 00:14
Для сортировки OrderBy все элементы массива должны быть инициализированы. У вас их 30 штук, и, судя по всему, вы не вызывали SetElementMassiva для каждого из них.
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 00:25
все равно даже если например 8 элементов, вводишь их и выводит туже ошибку
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 00:31
C#
1
private Tovar[] a = new Tovar[30];
здесь 30 меняли на 8?
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 00:32
да тут
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 00:48
C#
1
2
3
var c1 = new Sklad();
//с1.a заполнен null-ами
Tovar[] arr = c1.SortByCena();
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 00:53
помогите пожалуйста, чтобы заработало
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 01:00
Замените код выше на
C#
1
Tovar[] arr = p.SortByCena();
если я правильно понял что вам нужно.
Правда, это даст вам отсортированный по цене массив arr, то есть дальше, наверное, должно быть
C#
1
2
3
4
5
Console.WriteLine("Ваша матрица");
for (int j = 0; j < arr.Length; j++)
{
    Console.WriteLine(arr[j]);
}
1
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 01:09
К сожалению все так же, все таже ошибка. Но все равно спасибо)

Добавлено через 4 минуты
та же ошибка"Ссылка на объект не указывает на экземпляр объекта"
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 01:13
здесь оставили исправление из поста #10?
C#
1
private Tovar[] a = new Tovar[30];
Кол - во элементов массива должно совпадать с кол-вом элементов, что вы вводите, раз вы инициализируете его независимо от действий пользователя.
0
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 01:17
8 элементов у меня

Добавлено через 2 минуты
8 элементов и ввожу
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 01:23
Только что запустил, все работает.
Следует заметить, что при вводе элемента i, первое число должно совпадать с i. Или сделайте инициализацию без ввода номера элемента:
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < n1; i++)
{
    Console.WriteLine("Введите характеристики элимента {0}", i);
    //int n = int.Parse(Console.ReadLine());\
    string s = Console.ReadLine();
    int k = int.Parse(Console.ReadLine());
    int c = int.Parse(Console.ReadLine());
    Boolean t = Boolean.Parse(Console.ReadLine());
    p.SetElementMassiva(i, s, k, c, t);
}
1
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 50
25.05.2012, 01:38
значит у меня руки крюки потому что у меня не работает

Добавлено через 9 минут
спасибо
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
25.05.2012, 01:38
Рабочий код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Linq;
 
namespace ConsoleApplication1
{
    class Tovar
    {
        private string name_Tovars;
        private int kolich;
        private int cena;
        private Boolean rab;
 
        public string nameTovars
        {
            get
            { return name_Tovars; }
            set
            { name_Tovars = value; }
        }
        public int Kolich
        {
            get
            { return kolich; }
            set
            { kolich = value; }
        }
        public int Cena
        {
            get
            { return cena; }
            set
            { cena = value; }
        }
        public Boolean Rab
        {
            get
            { return rab; }
            set
            { rab = value; }
        }
 
 
 
    }
 
    //класс "склад"
 
 
 
    class Sklad
    {
        private Tovar[] a;
 
        public Sklad(int length)
        {
            a = new Tovar[length];
        }
 
        public void SetElementMassiva(int nomer, string nameTovars, int Kolich, int Cena, Boolean Rab)
        {
            a[nomer] = new Tovar();
            a[nomer].nameTovars = nameTovars;
            a[nomer].Kolich = Kolich;
            a[nomer].Cena = Cena;
            a[nomer].Rab = Rab;
        }
 
        public string GetElementMassiva(int nomer)
        {
 
            return a[nomer].nameTovars;
            //return string.Format( "Наименование: {0}, кол-во: {1}, цена: {2}, раб: {3}",
            //a[nomer].nameTovars, a[nomer].Kolich, a[nomer].Cena, a[nomer].Rab );
        }
 
 
        public Tovar[] SortByCena()
        {
 
            return a.OrderBy(q => q.Cena).ToArray();/// вот тут ошибка не нравится q.Cena Ошибка(Ссылка на объект не указывает на экземпляр объекта)
        }
 
        public Tovar[] SortByName()
        {
            return a.OrderBy(q => q.nameTovars).ToArray();
        }
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
 
            Console.WriteLine("Какое количество элиментов");
            int n1 = int.Parse(Console.ReadLine());
            Sklad p = new Sklad(n1);
            for (int i = 0; i < n1; i++)
            {
                Console.WriteLine("Введите характеристики элимента {0}", i);
                //int n = int.Parse(Console.ReadLine());\
                string s = Console.ReadLine();
                int k = int.Parse(Console.ReadLine());
                int c = int.Parse(Console.ReadLine());
                Boolean t = Boolean.Parse(Console.ReadLine());
                p.SetElementMassiva(i, s, k, c, t);
 
            }
 
 
            for (int i = 0; i < n1; i++)
            {
 
                Console.WriteLine("Введите номер товара");
                int b = int.Parse(Console.ReadLine());
                Console.WriteLine(p.GetElementMassiva(b));
            }
            Tovar[] arr = p.SortByCena();
            Console.WriteLine("Ваша матрица");
            Console.WriteLine("Ваша матрица");
            for (int j = 0; j < arr.Length; j++)
            {
                Console.WriteLine(arr[j].nameTovars);
            }
 
            Console.ReadLine();
 
 
        }
    }
 
}
Пример работы для трех
ЗЫ. Я без понятия, что она делает...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2012, 01:38
Помогаю со студенческими работами здесь

Не работает orderBy после изменения атрибута элемента
Здравствуйте! У меня есть коллекция элементов, у которых есть статус. Статус меняется так: - при клике на определенный элемент...

Как использовать me.orderby ???
Как использовать me.orderby ??? при попытке выполнить me.orderby 'ПОЛЕ СОРТИРОВКИ' возникает ошибка Invalid use of property

Orderby и вложенный from
Читаю книгу по C#. Там есть следующий пример: string arr2 = new string { &quot;gsaf&quot;, &quot;pmsc nvf a vib&quot;, &quot;Abcf&quot;, &quot;fpGmv sk&quot;,...

Вызов OrderBy
Доброе утро, всем форумчанам!! Есть класс на C#: class HuffmanTree { private List&lt;Node&gt; nodes = new...

OrderBy по значению строки
На вход подается массив обьектов, у которых имеется строковое поле(propString). Нужно отсортировать объекты по propString так, что чтобы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru