2011-04-14 72 views
2

我需要這個問題的幫助...... 我有兩個相同的對象「SearchResult」列表,這個對象有一個id屬性和一個score屬性。 在這兩個列表中可以存在相同的ID,但具有不同的分數,所以我需要創建一個結合了相同ID的新列表,但分數必須是兩個分數的總和,最後,該列表按最終得分排序。 我該怎麼做? 我搜索linq查詢,但我找不到任何解決方案。Concat和/或兩個通用列表中的合併對象

我希望你能幫助我,謝謝!!!

回答

6

聽起來像是你可能想是這樣的:

var summed = results1.Concat(results2) 
        .GroupBy(r => r.Id) 
        .Select(g => new SearchResult { 
           Id = g.Key, 
           Score = g.Sum(x => x.Score) 
          }); 
+0

天啊!你在問問傢伙之前回答這個問題! – 2011-04-14 13:29:08

+0

OP也想要一個'OrderBy' .. – Ani 2011-04-14 13:35:28

+0

謝謝!它像一個魅力! – 2011-04-14 13:51:03

0

您可以使用Union方法從鏈接。例如:

var mergedList = firstList.Union(secondList);