C#聚合列表中的属性

Ste*_*d82 8 c# linq

我有一个如下所示的对象

public class SampleObject
{
    public int MsfId { get; set; }
    public List<string> PgId { get; set; }
    public List<string> DcId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在以上聚合的PgId值的聚合中MsfId.情况DcId也是如此.

例如:

MsfId: 100
PgId: "abc"
DcId: "123"

MsfId: 100
PgId: "def"
DcId: "456"

MsfId: 100
PgId: "ghi"
DcId: "789"

MsfId: 101
PgId: "abc"
DcId: "123"
Run Code Online (Sandbox Code Playgroud)

如何编写LINQ查询来聚合它并创建一个SampleObjects列表,如下所示?

MsfId: 100
PgId: "abc", "def", "ghi"
DcId: "123", "456", "789"

MsfId: 101
PgId: "abc"
DcId: "123"
Run Code Online (Sandbox Code Playgroud)

Mak*_*kin 7

尝试这样的聚合:

var result = col.GroupBy(x => x.MsfId)
                .Select(x => new SampleObject {
                       MsfId = x.Key, 
                       PgCodes = x.Select(t=>t.PgId).ToList(),
                       DcCodes = x.Select(t=>t.DcId).ToList()
                });
Run Code Online (Sandbox Code Playgroud)