Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование словаря? 
:(
    Опции темы
Elfet
  Дата 25.5.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Всем привет! Всё програмлю вот тут свою программу для feedов smile Решил сделать отображение постов не по каналам, а все в одном списке, но столкнулся с проблемой. Помогите пожалуйста! smile

У меня есть класс такой структуры: 
Цитата
List<Channels> -> List<Items>
                  Image 

В приведенном ниже коде я собираю все Itemsы в один list, но мне нужно знать у каждого итемза, то в зависимости от того к какому Channels он принадлежал, какой у него был Image ?
Тут я сделал с использованием словаря:
Код

                        Dictionary<Item, Image> allItemsImage = new Dictionary<Item, Image>();
                        List<RssItem> allItems = new List<RssItem>();
                        foreach (Channel channel in Channels)
                            foreach (Item item in channel.Items)
                                if (item.newest)
                                {
                                    allItems.Add(item);
                                    allItemsImage.Add(item, channel.Img);
                                }
                        allItems.Sort();

Или лучше создать поле в Items (например ChannelImage ) которое при создании будет заполняться нужной Image ?
Может ещё какие способы есть?


--------------------
PM MAIL WWW Skype   Вверх
marcusmae
Дата 25.5.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Код

Dictionary<Channel, Dictionary<RssItem, ItemRecord>> channelsDictionary;


?

где

Код

class ItemRecord
{
    Image image;
    String message;
    ...
}


Ключи и значения лежат в коллекциях. Их можно перечислять или куда-нить копировать
Код

Dictionary<Channel, Dictionary<RssItem, ItemRecord>>.ValueCollection channelsDictionaryValues = channelsDictionary.Values;

foreach (Dictionary<RssItem, ItemRecord> value in channelsDictionaryValues)
    ...


а значения - это тоже словарь - можно его значения перечислить во вложенном foreach. Таким образом, Вы развернёте дерево в прямой список.

Так?

Это сообщение отредактировал(а) marcusmae - 25.5.2007, 23:07


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Elfet
Дата 26.5.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Угу, тоже вариант, так как все используемые классы - ссылочные должно быстро работать? В Image - это тоже ссылочного типа?

Добавлено через 2 минуты и 33 секунды
Хм, а мне нужно отсортировать по Items-ам:
Код

allItems.Sort();

А как словари сортировать? smile


--------------------
PM MAIL WWW Skype   Вверх
mr.DUDA
Дата 26.5.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Elfet @  26.5.2007,  09:12 Найти цитируемый пост)
А как словари сортировать?

SortedList или SortedDictionary, можно свою реализацию IComparer-а предоставить.


--------------------
user posted image
PM MAIL WWW   Вверх
Elfet
Дата 26.5.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ок, спасибо! smile


--------------------
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.