using static System.Console;
using System.Collections.Generic;
public static void Main() {
var dicionario = new Dictionary<string, int> { ["joão"] = 15, ["josé"] = 20, ["joaquim"] = 25 };
WriteLine("foreach par");
foreach (var par in dicionario) {
WriteLine($"{par.Key} => {par.Value}");
WriteLine("---------------------");
WriteLine("foreach key");
foreach (var key in dicionario.Keys) {
WriteLine($"{key} => {dicionario[key]}");
WriteLine("---------------------");
for (var i = 0; i < dicionario.Count; i++) {
var par = dicionario.ElementAt(i);
WriteLine($"{par.Key} => {par.Value}");
WriteLine("---------------------");
WriteLine("for iterator");
for (var iterador = dicionario.GetEnumerator(); iterador.MoveNext();) {
var par = iterador.Current;
WriteLine($"{par.Key} => {par.Value}");
WriteLine("---------------------");
WriteLine("while iterator");
using (var iterador = dicionario.GetEnumerator()) {
while( iterador.MoveNext()) {
var par = iterador.Current;
WriteLine($"{par.Key} => {par.Value}");
WriteLine("---------------------");
WriteLine("método abstrato");
foreach (var value in Iterar(dicionario)) {
WriteLine("---------------------");
WriteLine("LINQ ForEach");
dicionario.Keys.ToList().ForEach(key => WriteLine($"{key} => {dicionario[key]}"));
WriteLine("---------------------");
WriteLine("LINQ OrderBy+Select");
foreach (var par in dicionario.OrderBy(par => par.Key).Where(par => par.Value >= 18)) {
WriteLine($"{par.Key} => {par.Value}");
WriteLine("---------------------");
WriteLine("Parallel LINQ");
dicionario.AsParallel().ForAll(par => { WriteLine($"{par.Key} => {par.Value}"); });
WriteLine("---------------------");
WriteLine("Parallel LINQ de novo - pode dar ordem diferente");
dicionario.AsParallel().ForAll(par => { WriteLine($"{par.Key} => {par.Value}"); });
public static IEnumerable<int> Iterar(Dictionary<string, int> dicionario) {
foreach (var par in dicionario) {