2015-04-06 2 views
0

У меня есть параллельный словарь с datetime как ключ и целочисленное значение. каждые полчаса есть новая запись, и у меня есть данные за прошедшую неделю, я бы хотел выбрать верхнее целое значение для определенных дней. какие-либо рекомендации о том, как это сделать?Выберите записи из параллельного словаря, используя lambda

+1

Могут DateTime ключи словаря содержат часы, минуты и секунды? –

+0

yes DateTime содержит секунды – PaulWill

ответ

2

Что-то вроде:

var value = dictionary.Where(x => x.Key.Day == 5).Max(x=>x.Value); 
1

Одна возможность состоит в группе значения в вашем параллельного словаря по дате:

var dic = new ConcurrentDictionary<DateTime, int>(); 
dic[new DateTime(2015, 4, 5, 7, 0, 1)] = 1; 
dic[new DateTime(2015, 4, 5, 7, 0, 2)] = 2; 
dic[new DateTime(2015, 4, 5, 7, 0, 3)] = 3; 
dic[new DateTime(2015, 4, 6, 7, 0, 1)] = 5; 
dic[new DateTime(2015, 4, 6, 7, 0, 2)] = 6; 
dic[new DateTime(2015, 4, 6, 7, 0, 3)] = 7; 

var searchDay = new DateTime(2015, 4, 5); 

// Find the values corresponding to the specified day 
var dates = dic.GroupBy(item => item.Key.Date).FirstOrDefault(x => x.Key == searchDay.Date); 
if (dates != null) 
{ 
    int max = dates.Max(x => x.Value); 
    // That's the maximum value for the specified day 
} 
Смежные вопросы