Совсем недавно начал программировать, столкнулся с трудностью. У меня есть словарь, внутри которого ключи - названия нужных сигналов, внутри каждого ключа есть 2 значения, время(типа DateTime) и значение сигнала в этот момент времени:
public static Dictionary<string, SortedDictionary<DateTime, double>> dic = new Dictionary<string, SortedDictionary<DateTime, double>>();
Вот такие данные лежат в словаре:
public static void readDic()
{
foreach (var varName in dic)
{
foreach (var data in varName.Value)
{
Console.WriteLine("{0}: Key: {1}, Value {2}", varName.Key, data.Key, data.Value);
}
}
}
Пример вывода:
Как можно вытащить кусок данных всех ключей за указанный интервал. например нужно вывести данные за 3 минуты, указав начальные день, месяц, год, час, минуту
Не уверен, что понял, что вы хотите, но допустим в первом приближении так.
У нас есть следующий набор данных:
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 },
};
}
Допустим ваш фильтр будет в таких датах:
var result = Filter(dic, DateTime.Today.AddDays(-3), DateTime.Today.AddDays(-1));
Вы хотите получить на выходе:
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);
}
Устраивает? Такой результат хотели?
Ладно, сразу ещё один вариант. Возможно так понять условие задачи:
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)));
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Прошу помочь с данной ошибкой: NullReferenceException: Object reference not set to an instance of an object
(c# winforms sv2010 net4) На форме есть Datagridview1 с разными типами колонок: Combobox, TextBox (определены заранее)После запуска формы в Datagridview1 по кнопке "Добавить...
Подскажите пожалуйста как лучше написать скрипт движения персонажа в 2д игре с видом сверху так чтобы персонаж обходил или останавливался...
Ребят, решил после js изучать С#, сразу возникли сложностиНеобходимо перебрать двухмерный массив