c# List<T>, получить item не по индексу,а по значению

167
14 мая 2019, 14:30

Есть самописный класс

public class SectionClass
{
  public string Name {get;set;}
  public string Comment {get; set; }
 ...
 public string Value {get;set;} 
}

Есть список List<SectionClass> MyList. В нем можно получить объект из списка по индексу

SectionClass section = MyList[2]

Вопрос: как сделать так, что-бы можно было получать объект по свойству, вот так

SectionClass section = MyList["Секция 1"]
Answer 1

Если речь идет о самописной коллекции, то вы можете объявить свой индексатор, а за "кулисами" делать все, что душе угодно, например видимость того, что массив индексируется не с 0, а с 1, а можете как вы хотите сделать индексацию по строке.

Например, так:

public class Reports
{
    System.Collections.Generic.IDictionary<string,string> queries;
    public string this[string key]
    {
        get
        {
            return this.queries[key];
        }
    }
}
Answer 2

Никак, List<T> предоставляет к элементам доступ только по индексу.

Если нужен доступ по какому-то ключу, стоит вместо списка использовать Dictionary<TKey,TValue>

Либо воспользоваться поиском, например с помощью метода Find

Либо с помощью Linq, например метод First

Answer 3
Dictionary<string, SectionClass> MyList = Dictionary<string, SectionClass>();
READ ALSO
Почему curl делает 2 запроса подряд?

Почему curl делает 2 запроса подряд?

Ребят, помогите пожалуйста, я просто уже не понимаю почему так происходит

158
Не отображается русский текст в php-форме

Не отображается русский текст в php-форме

Там, где английские буквы, все нормально, но там, где русские - получаются какие-то кракозябрыНасколько понимаю, что-то не так с кодировкой,...

140
Удалить все из строки php

Удалить все из строки php

Всем привет, вот есть например вот такая строка vkcom/id11111, как удалять все символы за исключением id11111? Если строка может изменяться на такую...

145