C# 字典列表再次迭代
我有一个循环,我想迭代字典中的值,其中的值以列表的形式出现,以查找特定的值C# 字典列表再次迭代,c#,list,loops,dictionary,foreach,C#,List,Loops,Dictionary,Foreach,我有一个循环,我想迭代字典中的值,其中的值以列表的形式出现,以查找特定的值 Dictionary<int, List<int>> A = new Dictionary<int, List<int>>(); foreach (var item in A[*key*].Values) { if (A[*key*].Values == *specified value*)
Dictionary<int, List<int>> A = new Dictionary<int, List<int>>();
foreach (var item in A[*key*].Values)
{
if (A[*key*].Values == *specified value*)
{
a = true; //a is bool variable a made
}
}
字典A=新字典();
foreach([*键*]中的var项。值)
{
if(A[*键*].Values==*指定值*)
{
a=true;//a是布尔变量a
}
}
这不起作用,我不确定如何执行此操作您需要使用dictionary键获取
int的列表,在此int列表上您可以使用
foreach (var item in A[key].Values)
{
if (item == *specified value*)
{
a = true; //a is bool variable a made
}
}
如果您不需要知道在哪个键下找到了所需的值,则可以直接使用而不是使用键
foreach (var list in A.Values)
{
if (list.Contains(*specified value*))
{
a = true; //a is bool variable a made
}
}
如果您想要LINQ解决方案:
bool a = A.Values
.SelectMany(list => list)
.Any(item => item == specifiedValue);
或者使用标准的foreach
循环:
bool a = false;
foreach(var list in A.Values)
{
foreach(var item in list)
{
if (item == specifiedValue)
{
a = true;
break;
}
}
if (a)
break;
}
我想一旦你找到了你的物品,你就会想打破这个循环。当然,在这一点上,打破嵌套循环有点痛苦,但是有一些简单的方法可以解决这个问题(例如,将迭代移动到一个返回的方法,或者使用可怕的goto),但是您也可以使用LINQ解决方案,因为(IIRC)它本质上归结为相同的嵌套foreach
结构。+1我会跳过A.Keys
,然后A[item]
完全查找,只需迭代foreach(A.Values中的var list){if(list.Contains(*value*)…
是的,如果不需要在其下找到值的键,那就更好了,更新了我的答案,谢谢。向上投票支持Linq答案并优化中断一次a==true。
bool a = false;
foreach(var list in A.Values)
{
foreach(var item in list)
{
if (item == specifiedValue)
{
a = true;
break;
}
}
if (a)
break;
}