Как найти ключи в словаре объекта, который соответствует частично? - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь получить все элементы в словаре на основе заданной строки, которая частично или полностью соответствует.

Я попробовал следующий код, но, похоже, не работает

a.Where(d => d.Value.Contains(text)).ToDictionary(d => d.Key, d => d.Value);

Подскажите, пожалуйста, как этого добиться?

1 Ответ

7 голосов
/ 14 октября 2011

Код, который вы дали, должен работать абсолютно нормально, если вы действительно хотите найти записей , где значение имеет частичное совпадение. Если вы видите что-то еще, я подозреваю, что ваша диагностика ошибочна. Если вы хотите найти записи, в которых клавиша имеет частичное совпадение, просто поменяйте местами

a.Where(d => d.Value.Contains(text))

для

a.Where(d => d.Key.Contains(text))

Короткая, но полная программа, демонстрирующая код, который вы дали работающему:

using System;
using System.Collections.Generic;
using System.Linq;

class Test
{
    static void Main()
    {
        var original = new Dictionary<string, string> {
            { "a", "foo" },
            { "b", "bar" },
            { "c", "good" },
            { "d", "bad" },
        };

        string needle = "oo";

        var filtered = original.Where(d => d.Value.Contains(needle))
                               .ToDictionary(d => d.Key, d => d.Value);

        foreach (var pair in filtered)
        {
            Console.WriteLine("{0} => {1}", pair.Key, pair.Value);
        }
    }
}

Выход:

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