Linq返回字典中的WhereEnumerableIterator值匹配

本文关键字:WhereEnumerableIterator 返回 字典 Linq | 更新日期: 2023-09-27 18:19:52

我有以下代码从Dictionary<int, string> buttonGroups返回项目其中值与特定字符串匹配。

    public static void RemoveColorRange(List<Button> buttons, int[] matches)
    {
        Dictionary<int, string> buttonGroups = new Dictionary<int, string>();
        foreach (Button btn in buttons)
        {                               
            if ((int)btn.Tag == matches[0] || (int)btn.Tag == matches[1])
                continue;
            SolidColorBrush brush = (SolidColorBrush)btn.Background;
            Color color = new Color();
            color = brush.Color;
            buttonGroups.Add((int)btn.Tag, closestColor(color));               
        }
        var buttonMatches = buttonGroups.Where(x => x.Value == 'somestring');
    }

但是,它返回以下类型,而不是字典对象。我似乎无法从buttonMatches中检索到任何值。我错过了什么?

{System.Linq.Enumerable.WhereEnumerableIterator<System.Collections.Generic.KeyValuePair<int,string>>}

Linq返回字典中的WhereEnumerableIterator值匹配

这是因为Where不返回字典。要有一个字典,你需要显式地将过滤结果转换为一个:
var buttonMatches = buttonGroups.Where(x => x.Value == 'somestring')
                                .ToDictionary(x => x.Key, x => x.Value);
相关文章:
  • 没有找到相关文章