2013-06-24 2 views
1

У меня есть список кнопок List<Button> buttons, каждый из которых содержит объект тега.Получить кнопки по тегу из словаря C#

Затем объект словаря

Dictionary<int, string> buttonGroups = new Dictionary<int, string>(); 

Как вернуть List кнопок из List<Button> buttons, где их метки совпадают ключи в buttonGroups с помощью LINQ?

ответ

5
buttons.Where(b => buttonGroups.ContainsKey((int)b.Tag)) 
1

Попробуйте

listButtons.Where (button => !string.IsNullOrEmpty(button.Tag) && buttonGroups.Containskey (int.Parse(button.Tag)).ToList() 
3
List<Button> matches = buttons.Where(b => buttonGroups.Keys.Any(k => k == b.Tag)).ToList(); 

или с объединением (который может быть немного быстрее):

List<Button> matches =  
    (from b in buttons 
    join g in buttonGroups.Keys 
     on b.Tag == g 
    select b) 
    .ToList();