Как написать следующую группу по времени и зачистке запроса Linq? - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть такой список -

Id    Date
1     01/03/2011 14:15:23.320
1     01/03/2011 16:15:23.320
1     01/03/2011 18:15:23.320
1     01/04/2011 19:15:23.320
2     01/03/2011 14:15:23.320
2     01/03/2011 15:15:23.320
2     01/03/2011 18:15:23.320
2     01/05/2011 19:15:23.320
2     01/07/2011 20:15:23.320 

Мой желаемый вывод -

Id    Date
1     01/03/2011
1     01/04/2011 
2     01/03/2011 
2     01/05/2011 
2     01/07/2011

Так как я могу сгруппировать по первому списку по идентификатору и взять только часть датыи достичь результатов выше в Linq?

Ответы [ 2 ]

6 голосов
/ 28 февраля 2011

Попробуйте что-то вроде этого:

var result = yourList.GroupBy(item => 
    new {Id = item.Id, Date = item.Date.Date});

По существу, DateTime.Date извлекает информацию о времени.

Чтобы просмотреть результат, вы можете сделать:

foreach(var grp in result)
{
    Console.WriteLine("{0}: {1}", grp.Key.Id, grp.Key.Date);
}
2 голосов
/ 28 февраля 2011

Похоже, что вы хотите группировать по дате и id, поэтому вы хотите вывести их в структуру, по которой вы можете группировать.Когда вы создаете эту структуру ключей, вы можете отформатировать дату, используя свойство Date для правильного создания группировки:

from item in list
group item by new { item.Id, Date = item.Date.Date } into g
select g

В этот момент ключи в возвращенной группировке предоставят вам нужный список.

...