C#字典仅通过某些数据集循环

时间:2019-03-11 20:01:37

标签: c# loops dictionary foreach

说我有一个字典wipProfile,其定义为:

Dictionary<string, int> wipProfile = new Dictionary<string, int>() { { "L1", 10 }, { "L2", 12 }, { "L3", 23 }, { "L4", 9 } };

我想知道如何仅遍历值> = 10的那些对象吗?

我知道我可以做这样的事情:

foreach (KeyValuePair<string, int> lot in wipProfile)
{
        if (lot.Value >= 10)
        {
            //Do something here.
        }
}

但是有一种方法可以在进入循环之前指定过滤条件,这样我就不需要遍历整个字典,就像这样:

foreach (KeyValuePair<string, int> lot in wipProfile where lot.Value >= 10){
    //...
}

2 个答案:

答案 0 :(得分:0)

使用System.Linq

尝试一下
foreach (KeyValuePair<string, int> lot in wipProfile.Where(kv => kv.Value >= 10))
{
    //...
}

答案 1 :(得分:0)

您正在寻找这样的东西:

 wipProfile.Where((key, value) => value > 10).ToList();

这将为您提供列表,该列表将在线过滤值大于10的项目。然后您可以使用Linq样式或显示的保留字来进行ForEach!

编辑:

正如管家提到的那样,正确的做法是这样的:

 wipProfile.Where(keyValuePair => keyValuePair.Value > 10).ToList();