按域排序电子邮件列表

时间:2013-12-13 12:53:56

标签: c# list email

我想按照他们的域名对电子邮件地址进行排序。 让我们举一个例子:

var list = new List<string>();
list.Add(a@hotmail.com);
list.Add(b@aon.at);
list.Add(c@gmail.com);

所以结果应该是:

b@aon.at
c@gmail.com
a@hotmail.com

可以不分割电子邮件地址吗?

3 个答案:

答案 0 :(得分:4)

试试这个:

var sorted = list.OrderBy(x=>new MailAddress(x).Host).ToList();

它将按邮件主机

对您的电子邮件地址进行排序

答案 1 :(得分:1)

你可以使用linq。但是,您必须拆分电子邮件地址:

list.OrderBy(email => email.Split('@')[1]).ToList();

答案 2 :(得分:0)

您可以使用Regex获取电子邮件的域名:

var listSorted = list.OrderBy(email => Regex.Match(email, "@.*").Value)
                     .ToList();

,因为:

var temp = Regex.Match("a@hotmail.com", "@.*").Value;

告诉:在@签名后(包括@签名)取走所有内容,以便在这种情况下temp@hotmail.com