Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字典列表再次迭代_C#_List_Loops_Dictionary_Foreach - Fatal编程技术网

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;
}