我有一个包含一些记录的列表,其中一些记录具有相同的记录ID。我想按该记录ID进行分组,并使其余属性成为列表和一些字符串。这是我希望创建的对象:

public class Product {
    public string Id{ get; set; }
    public List<string> Package { get; set; }
    public string ShortDescription { get; set; }
}


我要处理的记录如下所示:

list_Of_Records = [ { id: 123, Package: ABC, ShortDescription: Description },
                    { id: 123, Package: ZXY, ShortDescription: Description },
                    { id: 123, Package: MLO, ShortDescription: Description },
                    { id: 456, Package: ABC, ShortDescription: DescriptionTwo },
                    { id: 456, Package: ZXY, ShortDescription: DescriptionTwo },
                    { id: 456, Package: MLO, ShortDescription: DescriptionTwo },
]


我想看起来像这样:

list_Of_Records_Organized = [
        { Id: 123, Package: [ABC, ZXY, MLO], ShortDescription: Description },
        { Id: 456, Package: [ABC, ZXY, MLO], ShortDescription: DescriptionTwo }
]


每个ID的描述总是相同的,因此我可以采用这三个中的任何一个。问题是那些包!

希望我足够清楚。

最佳答案

尝试这样的事情:

var list_Of_Records_Organized =
    from r in list_Of_Records
    group r by r.Id into g
    select new Product {
        Id = g.Key,
        Package = g.Select(r => r.Package).ToList(),
        ShortDescription = g.First().ShortDescription
    };


或使用Lambda语法:

var list_Of_Records_Organized = list_Of_Records.GroupBy(
    r => r.Id,
    (k, g) => new Product {
        Id = k,
        Package = g.Select(r => r.Package).ToList(),
        ShortDescription = g.First().ShortDescription
    });

10-07 19:30
查看更多