2013-05-29 3 views
0

Я пытаюсь использовать Linq для объединения некоторых элементов списка.Linq groupby issue

У меня есть список настраиваемого объекта, который содержит некоторые переменные: string1, string2 double1 date1.

Я хочу сгруппировать элементы списка, которые имеют string2 как общую строку, и double1 необходимо добавить.

Окончательно, я хочу сохранить последнюю дату последнего элемента.

Для первой строки (string1) это не имеет значения, я могу себе представить, что мы можем просто конкатрировать все строки?

Это пример DATAS до и после процесса:

"toto" "test" 0.10 Datetime(04-04-2013) 
"to" "test" 0.80 Datetime(01-01-2013) 
"toto" "teeeest" 0.10 Datetime(01-01-2013) 
"toto" "test" 0.10 Datetime(02-01-2013) 


"toto" "test" 1.00 DateTime(04-04-2013) 
"to" "teeeest" 0.10 DateTime(01-01-2013) 

Так что я не могу правильно использовать Linq, но я пытался использовать «GroupBy» с отборным прилагается, но он не работает: -/

Заранее благодарим за помощь!

ответ

4
var myList = new List<MyObject>(); 
var result = 
    myList.GroupBy(x => x.string2) 
      .Select(g => new MyObject { 
      string1 = string.Join(",", g.Select(v => v.string1)), 
      //or g.Min(v => v.string1) 
      //or g.First(v => v.string1) 
      //or whatever you want 
      string2 = g.Key, 
      double1 = g.Sum(v => v.double1), 
      date1 = g.Max(v => v.date1) 
      }); 
+0

dang Я собирался опубликовать почти идентичный код :) – Charles380

+0

@ Charles380, потому что это такой хороший код;) –