Mik*_*oud 2 c# algorithm optimization
考虑以下代码块:
using (FileStream fs = new FileStream(@"C:\bad_records.txt",
FileMode.Create,
FileAccess.Write))
{
var badEnumerable = _cache.Where(kvp => !kvp.Value.Item1);
fs.WriteLine(string.Format("BAD RECORDS ({0})", badEnumerable.Count()));
fs.WriteLine("==========");
foreach (var item in badEnumerable)
{
fs.WriteLine(string.Format("{0}: {1}", item.Key, item.Value.Item2));
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里_cache定义如下:
static Dictionary<string, Tuple<bool, string, string>> _cache;
Run Code Online (Sandbox Code Playgroud)
我可以两次迭代这个可枚举的吗?曾经Count()和一次一起foreach?
是的,你正在迭代可枚举两次.
测试这个的简单方法是使用辅助方法,例如:
private static int count = 0;
public static IEnumerable<T> CountIterations<T>(IEnumerable<T> sequence)
{
count++;
//or some other debug type logging
Console.WriteLine("Iterated {0} times.", count);
foreach(var item in sequence)
yield return item;
}
Run Code Online (Sandbox Code Playgroud)