Вопрос по c#, linq – Использование Linq для фильтрации определенных ключей из словаря и возврата нового словаря

4

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

var allDictEnteries = new Dictionary<string, string>
                                     {
                                         {"Key1", "Value1"},
                                         {"Key2", "Value2"},
                                         {"Key3", "Value3"},
                                         {"Key4", "Value4"},
                                         {"Key5", "Value5"},
                                         {"Key6", "Value6"}
                                     };
var keysToBeFiltered = new List<string> {"Key1", "Key3", "Key6"};

Новый словарь должен содержать только следующие записи

"Key2", "Value2"
"Key4", "Value4"
"Key5", "Value5"

Я не хочу делать копию исходного словаря и делать словарь. Удаляю, я думаю, что может быть и эффективный способ, чем это.

Спасибо за вашу помощь

stackoverflow.com/questions/2131648/… univerio
Вы все равно собираетесь создать новый словарь. Создайте копию оригинального словаря и используйтеDictionary.Remove(), Это операция O (1), и все это O (n), где n - это число «keysToBeFiltered». Я сомневаюсь, что вы станете лучше, чем это. Robert Harvey♦

Ваш Ответ

1   ответ
10

ToDictionary по результату:

var keysToBeFiltered = new HashSet<string> {"Key1", "Key3", "Key6"};
var filter = allDictEnteries
    .Where(p => !keysToBeFiltered.Contains(p.Key))
    .ToDictionary(p => p.Key, p => p.Value);
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded RamGopal

Похожие вопросы