Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130

Найти номера 5 максимальных значений ObservableCollection

10.11.2012, 15:54. Показов 4349. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть ObervableCollection c элеменами в виде класса. Есть у меня элемент "флаг". Мне нужно напротив 5 максимальных значений элемента "Сумма" сделать флаг=1; И достоточно часто перещитывать и актуализировать информацию т е чтобы со скоростью проблем не было.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2012, 15:54
Ответы с готовыми решениями:

Найти номера всех максимальных элементов в каждом столбце матрицы
Задания массива Найти номера всех максимальных элементов в каждом столбце. Вывести на экран мах и его индекс. Массив m, заполненный...

Найти сумму максимальных значений
Доброго времени суток. Вот условие задачи: Выставка проходит в зале, разделенном на MxN павильонов. Каждая из 4 стен имеет дверь в соседний...

Найти среднее арифметическое из минимальных значений в каждой строке и максимальных значений в каждом столбце
Дана матрица размера M*N. Найти среднее арифметическое из минимальных значений в каждой строке и максимальных значений в каждом столбце.

43
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
11.11.2012, 22:47  [ТС]
Студворк — интернет-сервис помощи студентам
Вы просили конкретный вопрос, я вроде бы задал. Если 2 поля и нужно по каждому сортировать, то какое решение?
Я это и в консоли могу написать. Только мне это способности найти решение не добавит.
И все таки случай когда сортировка требуется только одна весьма редок, чаще намного требуются разные сортировки по разным полям класса.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.11.2012, 22:50
eugene7711, тогда иметь обычный список и вызывать Sort, передавая туда нужный в данный момент компаратор. Только есть подозрение, что необходимость в такой реализации вызывана недостаточно продуманной архитектурой.
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
11.11.2012, 23:12  [ТС]
У меня это таблица вывода данных, а задача просто подсветить экстремльные значения. Т к данные постоянно меняются и вся таблица привязана к DataGrid WPF то вариантов нет. Вы предлагаете создать класс с компаратором, копировать какой то столбец в List(или также по ссылке) и с ним работать?
Пример как выдернуть 2 столбца аналог Summa и Flag не приведете?
предположим есть большой класс LinesAll(с членами Summa и Flag) и есть наш класс LineDom c компаратором.
Нужно переписать строку
C#
1
  ObservableCollection<LineDom> Collection2 = new ObservableCollection<LineDom>(Collection1.OrderByDescending(x => x).Take(5));
Чтобы ObservableCollection<LineDom> содержало Summa и Flag из LinesAll
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.11.2012, 23:15
eugene7711, не помню, как на WPF, а в winform'е DataGrid сам сортирует по столбцам, когда на заголовке кликаешь.
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
11.11.2012, 23:20  [ТС]
Мне не отсортировать нужно а подсветить и для этого конвертеру нужны данные из Flag. Конвертер тоже свои ограничения имеет в работе.
С компаратором должно быстро получится т к с сылками работает. Просто с => вообще не знаком, как выдергивать нужные элементы класса и использовать их при создании простого класса для поиска, должно очень коротко получится.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.11.2012, 23:21
eugene7711, ну тогда тупо подсвечивать всегда первые 5 строчек выделенного столбца DataGrid, для этого можно (мульти)триггером воспользоваться.
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
11.11.2012, 23:31  [ТС]
Зачем первые 5 то? У меня идет ценовая шкала слева, я ее сбивать не могу как и сортировать любой из столбцов. Мне нужно именно подсветить ячейки, которые расположены в разных местах столбцов.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 07:43
eugene7711, нарисуйте в граф.редакторе все вариации, которые хотите получить, нифига не понятно "я хочу подсвечивать, чтобы не сбивать и не сортировать столбцы, но есть 2 поля по которым надо сортировать". Взаимоисключающие параграфы соблюдены.
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
12.11.2012, 08:04  [ТС]
Мне просто осталось научиться передавать два элемента(два столбца) из коллекции типа LinesAll(где в классе 10 элементов) в коллекцию типа LineDom, где все условия для компаратора соблюдены.

C#
1
 ObservableCollection<LineDom> Collection2 = new ObservableCollection<LinesAll>(Collection1.OrderByDescending(x => x).Take(5));
Но не x=>x, а нужно передать два конкретных элемента, предпололжим Collection2.Summa=> Collection1.Summa и
Collection2.Flag=>Collection1.Flag;
Думаю мысль понятна использовать простейший класс для всей этой операции. Можно обойттсь так одним компаратором для всех столбцов Collection1.
Как правильно записать это не знаю.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 08:16
eugene7711, ну например, если нужно отсортировать по цене, а если она одинаковая, то по алфавиту
C#
1
2
3
4
5
CompareTo(A x, A y)
{
   int sum = x.Sum.CompareTo(y.Sum);
   return sum == 0 ? x.Name.CompareTo(y.Name) : sum;
}
или я опять неправильно понял
1
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
12.11.2012, 09:29  [ТС]
Это тоже полезно знать т к такие сортировки я не видел.
Но разговор у нас был о том, что компаратор в классе может быть только один и вы предложили мне использовать классы где больше компараторов не требуется.
Т к мой класс заведомо больше такого простого и требует сортировки в разное время по разным элементам, то я просто хочу создавать элемент простейшего класса, затем присваивать составляющим этого элемента 2 столбца из моей DataGrid и расставлять флаги. А т к это ссылки то и в моей таблице все встанет правильно.
Так вопрос в том как выполнить создание элемента ObservableCollection<LineDom> Collection2, чтобы он был инициализирован с связкой с двумя элементами LinesAll.
0
 Аватар для andrew_w2k
341 / 341 / 90
Регистрация: 04.03.2010
Сообщений: 648
12.11.2012, 09:44
Как-то Вы говорите на полупонятном языке)
вот Вам конкретный пример сортировки по разным критериям
C#
1
ObservableCollection<LineDom> Collection2 = new ObservableCollection<LineDom>(Collection1.OrderByDescending(x => x.Summa1).Take(5));
C#
1
ObservableCollection<LineDom> Collection2 = new ObservableCollection<LineDom>(Collection1.OrderByDescending(x => x.Summa2).Take(5));
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
12.11.2012, 09:54  [ТС]
Это понял, что компаратора хватает и одного. Просто раньше мне этого не сказали))
А так можно:
C#
1
ObservableCollection<LineDom> Collection2 = new ObservableCollection<LinesAll>(Collection1(x.SummaAll => x.Summa, x.FlagAll => x.Flag));
Вопрос уже не по теме, но очень близко.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 11:37
eugene7711, я понял. Вы хотите сделать из класса выборку двух произвольных полей и с ними работать?
Если да, то так
C#
1
2
3
4
var q = from a in Collection1
        select new {X = a.Param1, Y = a.Param2};
foreach(var v in q)
   Console.WriteLine(q.X + " " + q.Y);
1
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
12.11.2012, 13:03  [ТС]
Здесь не понятно причем здесь Collection1
C#
1
var q = from a in q
так наверное.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 13:09
eugene7711, у вас есть Collection1, в которой есть все элементы. Чтобы на её основе сделать таблицу, в которой будут не все сведения, нужно сделать так. Если вам надо что-то другое, формулируйте, но я уже устал. Пусть кто-нибудь вместо меня поможет.
0
1 / 1 / 4
Регистрация: 20.10.2012
Сообщений: 130
12.11.2012, 13:17  [ТС]
Если Брать Сollection 1, то там простой набор элементов, нет вложенных. Я вижу что вы сделали для более сложного варианта, когда в Collection 1 есть элемент "а" и у которго есть два вложенных поля.
Есл вложенных полей нет то будет так:
C#
1
2
var q = from  Collection1
        select new {X =Collection1.Param1, Y = Collection1.Param2};
Правильно?
Я думаю все разъяснилось.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 13:33
eugene7711, Collection - коллекция каких-то элементов, например
C#
1
2
3
4
5
6
7
8
9
10
11
class MyClass
{
   public int Param1;
   public int Param2;
... 
}
...
MyClass[] Collection1 = new MyClass[100];
...
var q = from b in Collection1
        select new {X =Collection1.Param1, Y = Collection1.Param2};
0
Не осилил Linux
 Аватар для =OutlaW=
267 / 61 / 6
Регистрация: 06.08.2009
Сообщений: 223
12.11.2012, 13:33
C#
1
2
3
4
   Method1.OrderByDescending(item => item.Summa)
                .Take(5)
                .ToList()
                .ForEach(item => item.Flag = 1);
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.11.2012, 13:40
То есть
C#
1
2
3
4
5
6
7
8
9
10
11
class MyClass
{
   public int Param1;
   public int Param2;
... 
}
...
MyClass[] Collection1 = new MyClass[100];
...
var q = from b in Collection1
        select new {X = b.Param1, Y =b.Param2};
у КОЛЛЕКЦИИ нет никаких полей. Коллекция - например массив, какие у массива поля могут быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2012, 13:40

Найти в массиве 2 максимальных элемента и их номера
Доброго времени суток) Помогите пожалуйста! Заполнить массив из 10 элементов случайными числами в интервале и найти в нем 2...

Найти номера максимальных элементов массивов
Даны массивы Xi, i = 1, …, 10 и Yj, j = 1, 2, …, 15. Найти номера максимальных элементов массивов Xmaxи Ymax. Определить, какой из...

Найти номера всех максимальных элементов
free pascal

Найти номера максимальных элементов массивов
Даны массивы Xi, i = 1, …, 10 и Yj, j = 1, 2, …, 15. Найти номера максимальных элементов массивов Xmaxи Ymax. Определить, какой из...

Найти номера всех максимальных элементов матрицы
Здравствуйте уважаемые программисты. Не сочтите за наглость, обратится вам за помощью. Вот такое задание. Не могу написать текст программы....


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru