C#和Concat中的组列表

C#和Concat中的组列表,c#,list,lambda,grouping,concat,C#,List,Lambda,Grouping,Concat,我有这个: class MyContact { public string firstname { get; set; } public string lastname { get; set; } } MyContact c1 = new MyContact() { firstname = "Filipe", lastname = "Silva" }; MyContact c2 = new MyContact() { firstname = "Filipe", lastname

我有这个:

class MyContact
{
    public string firstname { get; set; }
    public string lastname { get; set; }
}

MyContact c1 = new MyContact() { firstname = "Filipe", lastname = "Silva" };
MyContact c2 = new MyContact() { firstname = "Filipe", lastname = "Oliveira" };
MyContact c3 = new MyContact() { firstname = "Maria", lastname = "Santos" };
MyContact c4 = new MyContact() { firstname = "Jose", lastname = "Ricardo" };
MyContact c5 = new MyContact() { firstname = "Joao", lastname = "Roberto" };
MyContact c6 = new MyContact() { firstname = "Joao", lastname = "Augusto" };
MyContact c7 = new MyContact() { firstname = "Joao", lastname = "Mario" };

var cList = new List<MyContact>();
cList.AddRange(new MyContact[] { c1, c2, c3, c4, c5, c6, c7 });

您可以使用此代码创建列表:

var result = new List<string>();

foreach (var group in cList.GroupBy(x => x.firstname))
{
    var lastnames = String.Join("|" , group.Select(x => x.lastname));
    result.Add(String.Format("{0} - {1}", group.Key, lastnames));
}
var result=newlist();
foreach(cList.GroupBy中的var组(x=>x.firstname))
{
var lastnames=String.Join(“|”,group.Select(x=>x.lastname));
Add(String.Format(“{0}-{1}”,group.Key,lastnames));
}

另一个带有字典的选项:

var concat = new Dictionary<string, string>();
foreach (MyContact c in cList)
{
    if (concat.ContainsKey(c.firstname))
       concat[c.firstname] += "|" + c.lastname;
    else
       concat.Add(c.firstname,c.lastname);
}
var concat=newdictionary();
foreach(客户端中的MyContact c)
{
if(concat.ContainsKey(c.firstname))
concat[c.firstname]+=“|”+c.lastname;
其他的
concat.Add(c.firstname,c.lastname);
}

如果你想把名字和姓氏分开,这可能会很有用。这比我的好得多。GroupBy是一个不错的选择
var concat = new Dictionary<string, string>();
foreach (MyContact c in cList)
{
    if (concat.ContainsKey(c.firstname))
       concat[c.firstname] += "|" + c.lastname;
    else
       concat.Add(c.firstname,c.lastname);
}