我有一个包含一些记录的列表,其中一些记录具有相同的记录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
});