Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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 Linq:在字典中循环使用kvp_C#_Linq_Loops_Dictionary_Key Value - Fatal编程技术网

C# 初学者C Linq:在字典中循环使用kvp

C# 初学者C Linq:在字典中循环使用kvp,c#,linq,loops,dictionary,key-value,C#,Linq,Loops,Dictionary,Key Value,这是吗 还有这个 foreach (KeyValuePair<string, int> kvp in myDic.Select(x => x).ToList()) { } 同样的 我看到了这个代码,感到很困惑。Selectx=>x部分是否只是为了方便起见,以便以后可以将其转换为类似于x=>x!=0?是。这是一个例子 另外, foreach (KeyValuePair<string, int> kvp in myDic.ToList

这是吗

还有这个

    foreach (KeyValuePair<string, int> kvp in myDic.Select(x => x).ToList())
    {

    }
同样的

我看到了这个代码,感到很困惑。Selectx=>x部分是否只是为了方便起见,以便以后可以将其转换为类似于x=>x!=0?

是。这是一个例子

另外,

    foreach (KeyValuePair<string, int> kvp in myDic.ToList()) 
    {

    }
如果你不需要的话,它也会起作用。请列出一本字典。

是的。这是一个例子

另外,

    foreach (KeyValuePair<string, int> kvp in myDic.ToList()) 
    {

    }

在你不需要的情况下也能工作。请列出一本字典。

是的,它们产生的结果完全相同

但是,您可以使用:

foreach (KeyValuePair<string, int> kvp in myDic) 
{

}
因为字典实现了IEnumerable,所以您可以对它进行迭代


您编写的两种方法只是增加了将词典转换到另一个集合的不必要工作

是的,它们产生的结果完全相同

但是,您可以使用:

foreach (KeyValuePair<string, int> kvp in myDic) 
{

}
因为字典实现了IEnumerable,所以您可以对它进行迭代

您编写的两种方法只是增加了不必要的工作,将字典转换为另一个集合

Selectx=>x实际上没有什么区别。但是,ToList会从集合中创建一个新列表。这与@NikolaiDante answer在循环内修改myDic的情况不同

例如:

foreach (var item in myDic)
{

}
Selectx=>x实际上没有什么区别。但是,ToList会从集合中创建一个新列表。这与@NikolaiDante answer在循环内修改myDic的情况不同

例如:

foreach (var item in myDic)
{

}

它们完全一样,因为

// working fine
foreach (KeyValuePair<string, int> kvp in myDic.ToList())
{
    if (kvp.Value == 0) myDic.Remove(kvp.Key);
}

// throwing exception on Remove
foreach (KeyValuePair<string, int> kvp in myDic)
{
    if (kvp.Value == 0) myDic.Remove(kvp.Key);
}
将只返回初始列表

假设x是客户机的一个实例,您将编写发货代码,只需要客户机地址

那你就跟我一起去

Select.(x => x)

它将返回一个列表而不是列表,因此将您的方法与客户机类分离。为什么shipping会关心客户机本身,它只需要地址,因为它们完全相同

// working fine
foreach (KeyValuePair<string, int> kvp in myDic.ToList())
{
    if (kvp.Value == 0) myDic.Remove(kvp.Key);
}

// throwing exception on Remove
foreach (KeyValuePair<string, int> kvp in myDic)
{
    if (kvp.Value == 0) myDic.Remove(kvp.Key);
}
将只返回初始列表

假设x是客户机的一个实例,您将编写发货代码,只需要客户机地址

那你就跟我一起去

Select.(x => x)

它将返回一个列表而不是列表,因此将您的方法与客户机类分离为什么shipping会关心客户机本身,它只需要地址

这是什么语言?请编辑问题以将语言添加为标记。这是什么语言?请编辑问题以将语言添加为标记。