Группа C # Linq по DateTime игнорирует часы и минуты - PullRequest
3 голосов
/ 14 сентября 2011

У меня есть SortedList, который имеет DateTime для ключа и int для значения.К значению DateTime будут прикреплены часы и минуты.Можно ли написать процедуру C # linq для группировки SortedList по одной дате, игнорируя час и суммируя значение?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2011

С LINQ это довольно просто:

from item in list
group item by item.Key.Date into g
select new 
{
   Sum = g.Sum(a => a.Value),
   Values = g
};
0 голосов
/ 14 сентября 2011

По одной дате?

Легко!

Если вы объявили переменную singleDate как DateTime для получения суммы, вот запрос:

var result = (
        from key in sortedList.Keys.Cast<DateTime>()
        where key.Date == singleDate.Date
        select (int)sortedList[key]
    ).Sum();

Я использовал singleDate.Date, чтобы отбрасывать в любое время информацию, которую может иметь singleDate, но в остальном это должно быть довольно просто.

SortedList немного больно работать сLINQ.Можете ли вы сказать мне, почему вы используете его?

...