Лучший способ запросить словарь в C # - PullRequest
6 голосов
/ 14 ноября 2010

У меня есть словарь, например Dictionary<int, string>.
Как лучше всего получить строковое значение, если я знаю ключ?

Ответы [ 8 ]

18 голосов
/ 14 ноября 2010

Если вы знаете, что ключ в словаре:

value = dictionary[key];

Если вы не уверены:

dictionary.TryGetValue(key, out value);
10 голосов
/ 14 ноября 2010

Что вы подразумеваете под лучшим?

Это стандартный способ доступа к Dictionary значениям по ключу:

var theValue = myDict[key];

Если ключ не существует, это вызовет исключение, поэтому вы можете узнать, существует ли этот ключ, прежде чем его получить (небезопасно):

if(myDict.ContainsKey(key))
{
   var theValue = myDict[key];
}

Или вы можете использовать myDict.TryGetValue, хотя для получения значения требовалось использование параметра out.

5 голосов
/ 14 ноября 2010

Если вы хотите выполнить запрос к коллекции словаря, вы можете сделать следующее:

static class TestDictionary 
{
    static void Main() {
        Dictionary<int, string> numbers;
        numbers = new Dictionary<int, string>();
        numbers.Add(0, "zero");
        numbers.Add(1, "one");
        numbers.Add(2, "two");
        numbers.Add(3, "three");
        numbers.Add(4, "four");

        var query =
          from n in numbers
          where (n.Value.StartsWith("t"))
          select n.Value;
    }
}

Вы также можете использовать свойство n.Key, например,

var evenNumbers =
      from n in numbers
      where (n.Key % 2) == 0
      select n.Value;
4 голосов
/ 14 ноября 2010
var stringValue = dictionary[key];
3 голосов
/ 14 ноября 2010
string value = dictionary[key];
3 голосов
/ 14 ноября 2010

Разве вы не можете сделать что-то вроде:

var value = myDictionary[i]; * * 1004

2 голосов
/ 14 ноября 2010

Ну, я не совсем уверен, что вы спрашиваете здесь, но я думаю, что это о словаре?

Довольно просто получить строковое значение, если вы знаете ключ.

string myValue = myDictionary[yourKey];

Если вы хотите использовать как индексатор (если этот словарь входит в класс), вы можете использовать следующий код:

public class MyClass
{
  private Dictionary<string, string> myDictionary;

  public string this[string key]
  {
    get { return myDictionary[key]; }
  }
}
2 голосов
/ 14 ноября 2010

Dictionary.TryGetValue самый безопасный способ или используйте индексатор словаря, как это было предложено, но не забывайте перехватывать KeyNotFoundException

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...