簡體   English   中英

合並列表中具有相同鍵/屬性的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM