|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
||||||
Как обратиться к свойству объекта зная его порядковый номер?05.02.2020, 19:37. Показов 4849. Ответов 33
У меня есть список из объектов AbrechnungenDTO, а в dtParams есть поле с номером столбца по которому надо отсортировать... То есть если "0" то по ev.ID, если "1" то по ev.DepotID, если "2" то по ev.DepotBezeichnung и т.д.... В приведенном ниже коде я сортирую по нулевому столбцу
abrechnungenList = abrechnungenQ.OrderBy(ev => ev.ID).Skip(dtParams.Start) .Take(dtParams.Length).ToList(); а мне нужно по столбцу, который соответствует номеру, который я получаю из dtParams.Order[0].Column??? Воот... Я запутался, спасибо всем кто откликнется...
0
|
||||||
| 05.02.2020, 19:37 | |
|
Ответы с готовыми решениями:
33
Обратиться к свойству объекта, зная имя свойства в виде строки
Как обратиться к свойству объекта в массиве? |
|
251 / 167 / 94
Регистрация: 16.09.2019
Сообщений: 457
|
||||||
| 05.02.2020, 20:10 | ||||||
|
Lego9, Можно в свойствах хранить 2 параметра, первый порядковый номер свойства, а второй значение параметра.
Добавлено через 48 секунд Как-то так
0
|
||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
|||||||||||||||||
| 05.02.2020, 20:23 | |||||||||||||||||
Скорее вызвать надо,
0
|
|||||||||||||||||
|
Модератор
|
||||||||||||
| 05.02.2020, 20:30 | ||||||||||||
Сообщение было отмечено Lego9 как решение
РешениеВ C# такого понятия нет. Поэтому дефолтно реализовать это не выйдет. Для этого надо задать, что такое номер свойства. Для идентификации номера и геттера свойства можно использовать либо словарь, либо, если номера идут без пропуска, массив. Пример
1
|
||||||||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
|
||||||
| 05.02.2020, 20:31 | ||||||
|
Эм, если материализация IQuerable то скорее всего на вход нужен будет Expression<Func<AbrechnungenDTO, object>>>, то есть тип entries в словаре поменять на этот:
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
|||||
| 06.02.2020, 12:04 [ТС] | |||||
|
Спасибо всем откликнувшимся. Сейчас буду разбираться. Словарики никогда не делал и никогда не использовал...
Добавлено через 15 минут IamRain, спасибо только что то тут не так, я с подобным не сталкивался Добавлено через 5 минут Добавлено через 13 минут Элд Хасп, Cкажите пожалуйста, а почему нельзя
0
|
|||||
|
Модератор
|
||
| 06.02.2020, 12:41 | ||
|
Надо тогда его сделать ещё и stastic. И даже больше, если это ваш класс и вы можете менять его код, то можно добавить в него индексатор, а будет, вообще, красивое решение.
0
|
||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
|||
| 06.02.2020, 12:50 [ТС] | |||
|
Ох господа, с каким огромным скрипом в меня всё это проникает... Скажите а как мне ещё направление сортировки подтянуть? Оно находится в dtParams.Order[0].Dir.. То есть в dtParams.Order[0].Column лежит номер колонки, 1 или 2, или 3, итд ... А в dtParams.Order[0].Dir лежит направление "asc" или "desc". Как мне направление задействовать?
Добавлено через 1 минуту Добавлено через 3 минуты
0
|
|||
|
Модератор
|
|||||||||||||
| 06.02.2020, 13:49 | |||||||||||||
1
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
||
| 06.02.2020, 13:54 [ТС] | ||
|
Элд Хасп, Aх, огромное спасибо. Уже лучше. Не могли бы вы мне на простом языке проговорить вот эту строчку:
0
|
||
|
Модератор
|
||
| 06.02.2020, 13:56 | ||
|
А у вас даже создание простого массива или словаря вызывает проблемы. Поэтому проще будет по условию "asc" или "desc" обращаться к методам OrderBy или OrderByDescending. Или после OrderBy реверсировать последовательность - Reverse(). Но если есть желание можно создать и нормальный компаратор, который всё это будет делать сам.
0
|
||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
|||||||
| 06.02.2020, 13:57 [ТС] | |||||||
|
типа:
0
|
|||||||
|
Модератор
|
||
| 06.02.2020, 14:00 | ||
|
IComparer<T> Интерфейс
Добавлено через 2 минуты Получается из обычного массива методом Array.AsReadOnly(массив)Это неизменяемая коллекция, чтобы гарантировать защиту от случайных ошибок изменяющих значение её элементов.
1
|
||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
|||||||||||
| 06.02.2020, 14:01 [ТС] | |||||||||||
|
Элд Хасп, Я в итоге подсмотрел в соседнем проекте и сделал вот так...:
Нужно подключить System.Linq.Dynamic; В пространстве имен класса AbrechnungenDTO:
0
|
|||||||||||
|
Модератор
|
|||
| 06.02.2020, 14:03 | |||
public.И всегда ставьте модификаторы доступности public, internal, protected, private - это гарантирует от случайных ошибок. Возьмите это за привычку. Добавлено через 1 минуту
1
|
|||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
|||
| 06.02.2020, 14:09 [ТС] | |||
|
Элд Хасп, Все равно огромное спасибо! Вы не могли бы тем не менее мне пояснить Ваш код! Очень хочется понять! И что мне нужно нажать, что бы у Вас был + в карме?
Добавлено через 5 минут
0
|
|||
|
Модератор
|
|||
| 06.02.2020, 14:17 | |||
|
Но он больше рассчитан на методы расширения IEnumerable LINQ. Как он себя поведёт с IQueryable я точно не знаю. Суть в том, что для IQueryable надо так составлять LINQ чтобы он выполнялся сервером без конвертации в IEnumerable. Методы IEnumerable будут выполняться уже клиентским приложением.
1
|
|||
|
Модератор
|
||
| 06.02.2020, 14:26 | ||
|
Допустим у нас есть тип List<T>. Объявляя его мы уточняем тип T: List<int> list = ....; Так же мы можем объявить список списков: List<List<int>> listList = .... В таком случае переменная listList имеет тип List<List<int>>, каждый её элемент имеет тип List<int>, а элемент элемента имеет тип int. Обращение к элементу нижнего уровня делается как в ступенчатом массиве int num = listList[index1][index2]; В моём же примере нужны элементы имеющие тип делегата функции с типом Func<AbrechnungenDTO, object>. Это означает, что функция принимает на вход один параметр типа AbrechnungenDTO, а возвращает значение типа object (то есть любого типа). ReadOnlyCollection<> - означает что эти делегаты собраны в неизменяемую коллекцию с целочисленным индексатором, по простому в неизменяемый массив.
1
|
||
|
0 / 0 / 0
Регистрация: 20.01.2014
Сообщений: 259
|
||||||||||||||||
| 06.02.2020, 18:06 [ТС] | ||||||||||||||||
|
Элд Хасп,
ReadOnlyCollection, это коллекция элементов типа - Func<AbrechnungenDTO, object>. Могла бы быть типа string или List, а она вот такого типа -Func<AbrechnungenDTO, object>. А вот тут мне не понятно. .. Func<AbrechnungenDTO, object>. Это что? Это предикат? В книжке написано, что это делегат типа Func. A зачем он? Говоря простым человеческим языком что мы тут велим сделать коду? Я простите не занудничаю и не пытаюсь спорить, мне просто искренне не понятно пока я это простым языком не проговорю...
Простите за такой нубский подход. Но я не знаю как мне иначе понять. Тут кода меньше чем у меня текста в вопросе.... Спасибо. Добавлено через 16 минут И еще, вы меня не проконсультируете. У меня приложение, Бутстрэп + Ангуляр + с#. Коллега отбывая в отпуск сказал, что состояние кнопок на странице мы запоминаем с помощью LocalStorfge. Я посмотрел в старом проекте и ничего не понял... Понял, что local-storage.js мне устанавливать не надо. Ибо в соседнем проекте его нет. Как это работает не понимаю, гуглю, лучше не становится... Вы случайно не в материале? А то тут довольно редко отвечают... Я и так доволен как слон, что столько инфы по первому вопросу собрал...
0
|
||||||||||||||||
|
Модератор
|
|||||||||||||||
| 06.02.2020, 18:40 | |||||||||||||||
|
Это может быть любой метод типа таких
Это просто более сокращённая и быстрая запись таких же методов.
В следующих трёх сразу создаётся анонимный метод и используется ссылка на него. То есть не надо заранее объявлять метод. Что сокращает код. Такие выкрутасы нужны из-за того, что в C# нельзя получить ссылку на свойство. Приходится создавать методы для получения значения свойства. Добавлено через 9 минут возвращаемый_тип this[тип_индекса index] - означает, что в этом типе (this ссылка на экземпляр типа https://docs.microsoft.com/ru-... words/this) объявляется индексатор. Индекс имеет заданный тип и индексатор возвращает указанный тип. Всё аналогично объявлению свойства. В указанном случае, индексатор имеет только геттер. То есть присвоить значение используя индексатор нельзя. Геттер индексатора извлекает по указанному индексу метод-функцию из массива Getters. В этот метод передаёт текущий экземпляр себя (экземпляр AbrechnungenDTO для которого используется индекс) и возвращает значение возвращаемое этим методом. Добавлено через 1 минуту Форум и создан с целью поиска ответов на вопросы. Что не понятно - интересуйтесь, спрашивайте дальше. Добавлено через 8 минут Lego9, ещё раз хотел бы уточнить. Задача получения результата может быть двух разных типов. Первая, это преобразовать полученные от БД данные (отсортировать, отфильтровать, посчитать и .т.д) в клиенте. Я вам пишу именно за такой тип задачи. Второй тип, это получение из БД данных в уже нужном виде. Работа по обработке данных выполняется сервером. Для этого надо или создать самому нужный SQL запрос или создать его средствами Entity Framework используя методы IQueryable. С таким типом задач я сам пока только разбираюсь и не знаю насколько предлагаемый мною подход сможет её решить. Добавлено через 3 минуты Об остальном даже не слышал... Я не профессиональный программист. Начинающий любитель - программирование хобби.
1
|
|||||||||||||||
| 06.02.2020, 18:40 | |
|
Помогаю со студенческими работами здесь
20
Как обратиться к свойству объекта WPF из метода static класса? Обратиться к свойству дочернего объекта Как обратиться к контролу, зная его имя? Обратиться к свойству объекта при помощи FindComponent Tkinter - теперь как обратиться к виджету зная его имя? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|