[英]Merge items in list with the same key/property
這應該不是很難做到的,但是我正在努力尋找正確的方法來做到這一點。
我有兩個具有相同屬性的列表。 我想做的是將這兩個列表合並在一起,並合並/合並列表中具有相同鍵/屬性的各個項目。
這是我的ViewModel
:
public class GradeViewModel {
public int GradeId { get; set; }
public string Name { get; set; }
public int Total { get; set; }
}
在這里,我正在填充列表:
var buyPostGrades = Mapper.Map<IEnumerable<BuyPostGrade>, IEnumerable<GradeViewModel>>(_reportService.GetBuyPostGrades());
var sellPostGrades = Mapper.Map<IEnumerable<SellPostGrade>, IEnumerable<GradeViewModel>>(_reportService.GetSellPostGrades());
現在,我想將兩個列表合並為一個,如果列表之間有任何項目共享相同的GradeId
那么我想將它們合並為一個項目。
因此,例如,如果我在buyPostGrades
列表中有一個類似於以下內容的項目:
GradeId = 6,
Name = "TestGrade",
Total = 4
然后我在sellPostGrades
列表中有一個類似於以下內容的項目:
GradeId = 6,
Name = "TestGrade",
Total = 10
那么我想將這兩個項目合並為一個看起來像這樣的項目:
GradeId = 6,
Name = "TestGrade",
Total = 14
我確定可以在某些Linq
中使用它來執行此操作,但是我還是新手,因此不確定哪種方法最好。
假設相同的年級ID意味着相同的名稱,則可以合並兩個列表,如下所示:
var res buyPostGrades
.Concat(sellPostGrades)
.GroupBy(x => new {x.GradeId, x.Name})
.Select(g => new GradeViewModel {
GradeId = g.Key.GradeId
, Name = g.Key.Name
, Total = g.Sum(x => x.Total)
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.