Поиск по спискам...
От: Рюрик Россия  
Дата: 08.08.06 11:17
Оценка:
Привет.
Значит, такой вопрос.
Есть список из экземпляров одного класса. List<SomeClass>
Надо искать по одному из четырех полей класса.
Как лучше сделать? Чтобы быстро и красиво?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Поиск по спискам...
От: desco США http://v2matveev.blogspot.com
Дата: 08.08.06 11:23
Оценка: 10 (2)
Здравствуйте, Рюрик, Вы писали:

Р>Привет.

Р>Значит, такой вопрос.
Р>Есть список из экземпляров одного класса. List<SomeClass>
Р>Надо искать по одному из четырех полей класса.
Р>Как лучше сделать? Чтобы быстро и красиво?


class SomeClass
{
  private int f1;
  //....

  public int F1
  {
    get { return f1; }
    set { f1 = value; }
  }
  //...
}

  public static void Main()
  {

    // либо так
    Predicate<SomeClass> predicate = F1Condition;
    List<SomeClass> list = new List<SomeClass>();
    list.Find(predicate);

    // либо так
    list.Find(delegate(SomeClass s)
                {
                  return s.F1 == 10;
                });
  }
  
  public static bool F1Condition(SomeClass s)
  {
    return s.F1 == 10;
  });
Re: Поиск по спискам...
От: pt4h Беларусь http://dzmitryhuba.blogspot.com/
Дата: 10.08.06 08:23
Оценка:
Здравствуйте, Рюрик, Вы писали:

Р>Привет.

Р>Значит, такой вопрос.
Р>Есть список из экземпляров одного класса. List<SomeClass>
Р>Надо искать по одному из четырех полей класса.
Р>Как лучше сделать? Чтобы быстро и красиво?

Можно попробовать вот так:
[C#] Поиск по спискам с передачей параметра
Автор: pt4h
Дата: 10.08.06
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Поиск по спискам...
От: ika Беларусь  
Дата: 10.08.06 11:48
Оценка:
Здравствуйте, Рюрик, Вы писали:

Р>Привет.

Р>Значит, такой вопрос.
Р>Есть список из экземпляров одного класса. List<SomeClass>
Р>Надо искать по одному из четырех полей класса.
Р>Как лучше сделать? Чтобы быстро и красиво?

Если списки немаленького размера, то, IMHO, лучше завести 4 мапа — по одному на каждый критерий поиска. Ключи — значение полей экземпляров someClass, значения — сами экземпляры SomeClass. Мап выбирать tree-подобный. В процессе работы с ним отслеживать статистику по обращениям и производить перебалансировку дерева (если оно само этого не умеет). Суть — заменить полный перебор выборкой элемента/подсписка по индексу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.