![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
no0b |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.10.2013 Репутация: нет Всего: нет |
Использую компонент treeview, источник данных List<MovWithArticle> элементов
Id - ид, Parent - ид родителя Собственно вопрос вот в чем: как для всех родительских элементов рассчитать сумму дочерних? |
|||
|
||||
likegift |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
вы хотите посчитать сумму дочерних элементов в то время, когда о самом их существовании вам ничего не известно. Может, стоит подумать над классом еще чуток и parent заменять на childs?
Это сообщение отредактировал(а) likegift - 10.10.2013, 09:50 |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
likegift, тогда не будет информации о родителе
держать и то, и то - не слишком разумно из-за возможной рассинхронизации более того, подход с хранением коллекции детей сам по себе сложнее, чем хранением лишь информации о родителе единственный недостаток у структуры топик-стартера - невозможность "по-человечески" задавать узлы верхнего уровня Guid.Empty - так себе вариант, практически magic value, я бы Guid? посоветовал использовать
|
|||
|
||||
likegift |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
А ему не нужна информация о родителях, он сумму детей считает, а не родителей. Да и подходы для хранения детей\родителей одинаковы не только по сложности, но и по занимаемой памяти. Не говоря уже о том, что метод, реализующий сумму детей в "моем" случае, будет на порядок проще и понятнее, чем ваш. |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
ну как же одинаковы? 1. сложность - для удаления ребёнка нужно будет отыскать его в коллекции - код поиска + время на поиск - нужно предусмотреть контроль за данными, например, чтобы один ребёнок не присутствовал дважды (обе проблемы решаются с помощью HashSet) - поиск родителя (хоть именно эта задача не требует этого, не факт, что не потребуется никогда) существенно сложнее - храние в базе данных без предварительной трансформации невозможно 2. память - само заворачивание в объект-коллекцию требует дополнительной памяти - если количество детей стого не определено раз и навсегда, то неизбежен перерасход памяти при добавлении элементов (если массив - то явное создание нового, если List или HashSet - неявное увеличение в большим запасом при превышении ожидаемого размера) |
|||
|
||||
no0b |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 9.10.2013 Репутация: нет Всего: нет |
Благодарю за ответ! Задачу решил на стороне бд, после долгих и бесплодных экспериментов с рекурсией ![]() |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |