Not sure I understood what you want, but let's say in the first approximation.
We have the following data set:
public Dictionary<string, SortedDictionary<DateTime, double>> GetSampleData() { var d1 = new SortedDictionary<DateTime, double>() { {DateTime.Today.AddDays(-4), -11.3}, {DateTime.Today.AddDays(-3), 10.6}, {DateTime.Today.AddDays(-2), 1.1}, {DateTime.Today.AddDays(-1), 2.4} }; var d2 = new SortedDictionary<DateTime, double>() { {DateTime.Today.AddDays(-3), 11.4} }; var d3 = new SortedDictionary<DateTime, double>() { { DateTime.Today.AddDays(-2), -11.3 }, { DateTime.Today.AddDays(-3), 4.8 } }; var d4 = new SortedDictionary<DateTime, double>() { { DateTime.Today.AddDays(0), 3.3 }, { DateTime.Today.AddDays(1), 6.2 } }; return new Dictionary<string, SortedDictionary<DateTime, double>>() { {"test1", d1 }, {"test2", d2 }, {"test3", d3 }, {"test4", d4 }, }; }

Suppose your filter will be on such dates:
var result = Filter(dic, DateTime.Today.AddDays(-3), DateTime.Today.AddDays(-1));
You want to get at the output:
public Dictionary<string, SortedDictionary<DateTime, double>> Filter(Dictionary<string, SortedDictionary<DateTime, double>> source, DateTime from, DateTime to) { return source.Where(x => x.Value.Any(v => v.Key >= from && v.Key <= to)) .ToDictionary(x => x.Key, x => x.Value); }

Arranges? Such a result wanted?
Okay, just another option. It is possible to understand the condition of the problem:
public Dictionary<string, SortedDictionary<DateTime, double>> Filter(Dictionary<string, SortedDictionary<DateTime, double>> source, DateTime from, DateTime to) { return source.Where(x => x.Value.Any(v => v.Key >= from && v.Key <= to)) .ToDictionary(x => x.Key, x => new SortedDictionary<DateTime, double>(x.Value.Where(v => v.Key >= from && v.Key <= to).ToDictionary(y => y.Key, y => y.Value))); }
