public void Count_of_filtered_is_equals_to_count_of_linqWhered() { var start = new DateTime(2016, 1, 1); var end = new DateTime(2016, 1, 8); var sw = new Stopwatch(); sw.Start(); var linq = Samples.Where(s => start < s.Value.DateTime && s.Value.DateTime < end).ToArray(); sw.Stop(); Log($"linq whered count={linq.Length}, time={sw.ElapsedMilliseconds}[ms]"); sw.Reset(); var btree = new BPlusTree <DateTime, long>(); foreach (var s in Samples) { btree.Add(s.Value.DateTime, s.Key); } sw.Start(); var result = btree.GtAndLt(start, end).Select(id => Samples[id]).ToArray(); sw.Stop(); Log($"filtered count={result.Length}, time={sw.ElapsedMilliseconds}[ms]"); sw.Reset(); Assert.AreEqual(linq.Length, result.Length); }