2015-10-15 2 views
1

У меня есть список KeyValuePair (Ключ - это строковый тип, а значение - тип int). И я хочу вернуть список пар ключей значений, который получит мои сопоставимые критерии. Пример: верните список, где Key = «A» и Value = 10.Как выбрать из списка KeyValuePair?

Как будет работать над этим и как написать выражение получить мой требуемый результат?

ответ

1

Вы можете использовать выражение LINQ следующим образом:

IList<KeyValuePair<string, int>> values = new List<KeyValuePair<string, int>>(); 

добавить свои ключевые ценности.

IList<KeyValuePair<string, int>> result = values.Where(v => v.Key == "A" && v.Value == 10).ToList(); 
1
var list = kvList.Where(kv => kv.Key == "A" && kv.Value == 10).ToList(); 
3

Вместо того, чтобы использовать список KeyValuePair, вы можете использовать

Dictionary <string, int> dictionary = new Dictionary <string, int>(). 

Для поиска в нашей коллекции мы будем использовать первый оператор и еще лучше будет, если мы будем использовать оператор FirstOrDefault , Зачем? Описание ниже. Поиск по оператору происходит намного быстрее, потому что коллекция ищет элемент по элементу в первый встреченный элемент, который удовлетворяет условию. В то время как оператор Где выполняет поиск по всей коллекции.

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

Например, давайте добавим некоторые записи в коллекцию.

dictionary.Add ("one", 1); 
dictionary.Add ("two", 2); 
dictionary.Add ("three", 3); 

Теперь, используя LINQ, вы можете очень легко и быстро получить интересующий нас товар. Затем мы можем искать ключевой элемент, потому что знаем, что это уникально. Есть два способа:

Первый способ гарантирует, что мы не будем возвращать исключение в отсутствие поиска элемента (например, Key = "four"). Результат будет пустой ключ и значение 0.

KeyValuePair <string, int> results = dictionary.FirstOrDefault (v => v.Key.Equals ("two")); 

Второй способ может генерировать ошибку, когда поисковый элемент не в коллекции.

KeyValuePair <string, int> results = dictionary.First (v => v.Key.Equals ("two")); 

Теперь вы можете получить значения:

string key = results.Key; 
int value = results.Value; 

 Смежные вопросы

  • Нет связанных вопросов^_^