2012-05-22 4 views
0

У меня есть список элементов с следующей структурой:Расширенный GroupBy

  1. Id
  2. DateTime
  3. Вес

Как можно сгруппировать их по Id и Дата из Date поля (который равен DateTime) и имеет общий вес группы? Я хочу что-то вроде этого:

  1. Id
  2. Дата
  3. общую массу
+4

Группируйте их тем, что? 'Id' и' Date'? – vcsjones

+0

да, я хочу, чтобы он был сгруппирован по идентификаторам и дате (вместо DateTime) –

+0

@vcsjones: любая идея? –

ответ

3

Если вы хотите сгруппировать их как с ID и дата вы можете сделать это следующим образом:

var grp = from x in items 
      group by new {x.Id, x.DateTime.Date}; 

var result = grp.Select(x=>new {item = x.Key, TotalWeight = x.Sum(y=>y.Weight)}); 
+0

Я хочу сгруппировать по 'Date', вместо' Datetime' –

+0

@RezaOwliaei, см. Мое редактирование, но если это для linq2EF, это не будет работать, если это так, скажите мне, чтобы обновить ответ. –

0
var result = from x in items 
      group x by new { x.Id, x.DateTime.Date } into grouping 
      select new 
      { 
       id = grouping.Key.Id, 
       Date = grouping.Key.Date, 
       TotalWeight = grouping.Sum(y=>y.Weight) 
      };