簡體   English   中英

在 linq 中分組並合並某些字段結果

[英]group by and merge some field result in linq

我有一個類

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

現在我有一個這個類的列表: List<Person> persons ;

var persons = new List<Person> {
            new Person { Id = 1, LastName = "Reza", FirstName="Jenabi" },
            new Person { Id = 1, LastName = "Amin", FirstName="Golmahalle"},
            new Person { Id = 2, LastName = "Hamed", FirstName="Naeemaei"}
        };

有沒有一種方法可以按Id分組並獲取所有全名(組合名字和姓氏)的列表?

所以分組后:

var Id = results[0].Id; // Output : 1
List<string> fullNames = results[0].FullNames; // Output : "Reza Jenabi","Amin Golmahalle"

我相信這是你需要的:

var results = persons.GroupBy(x => x.Id)
    .Select(x => new { Id = x.Key, FullNames = x.Select(p => $"{p.FirstName} {p.LastName}").ToList() })
    .ToList();

我認為下面的代碼可以幫助你:

var fff = from p in persons
        group $"{p.FirstName} {p.LastName}" by p.Id into g
        select new { PersonId = g.Key, FullNames = g.ToList() };

是的,您可以使用GroupByJoin這些項目:

var grouped = persons.GroupBy(p => p.Id)
    .Select(s => string.Join(", ", s.Select(a=> $"{a.FirstName} {a.LastName}")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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