说我有一个字典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){
//...
}
答案 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();