2013-05-29 198 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,因爲它是一個很好的代碼;) –