【发布时间】:2020-03-24 09:06:52
【问题描述】:
我有一个具有以下属性的类:
public class Party
{
public string Type { get; set; }
public string Name { get; set; }
}
还有这个填充列表的方法:
List<Party> parties = new List<Party>();
parties.Add(new Party {Type = "Plaintiff", Name = "Eilean Dover"});
parties.Add(new Party {Type = "Plaintiff", Name = "Bea O'Problem"});
parties.Add(new Party {Type = "Defendant", Name = "Anna Graham"});
parties.Add(new Party {Type = "Witness", Name = "John Doe"});
parties.Add(new Party {Type = "Witness", Name = "Rosa Shore"});
我的目标是将所有对象(各方)放在一个字符串中。 到目前为止,我已经使用 String.Join 和 Linq 将它们内联。
string partiesinline = string.Join(", ", parties.Select(x => String.Join(" ", new[] { x.Type, x.Name })));
运行后,字符串partiesinline 如下所示:
Plaintiff Eilean Dover, Plaintiff Bea O'Problem, Defendant Anna Graham, Witness John Doe, Witness Rosa Shore
我的进一步改进是按类型对各方进行分组,如果有更多相同类型,则将类型设为复数形式。 理想情况下,字符串应如下所示:
Plaintiffs Eilean Dover, Bea O'Problem, Defendant Anna Graham and Witnesses John Doe, Rosa Shore
我可以使用字典或列表来获取类型的复数,但我被困在对各方进行分组并在partyinline 字符串中为具有相同名称的各方保留单一类型。 你有什么建议和解释吗?
我已阅读 Using LINQ to group a list of objects 和 Using Linq to group a list of objects into a new grouped list of list of objects 但我被卡住了,我无法识别步骤以获得所需的结果。
【问题讨论】: