从电子邮件列表中获取唯一域列表

时间:2018-06-29 12:56:16

标签: c# .net linq .net-core

例如,我有一个电子邮件列表,例如:

a@domain.com
b@domain.com
c@domain.com
d@sub.domain2.com
g@sub.domain2.com
x@gmail.com
y@analytics.gmail.com
z@yahoo.com

我想获得@之后的部分,并且只获得一次(唯一)。

到目前为止,我已经尝试过:

string[] campusCup(string[] emails)
{
    var hs = new HashSet<string>();

    var emailList = emails.Select(x => new { domain = x.Split('@')[1] })
                            .Where(x => hs.Add(x.domain) && Write(x.domain));

    return hs.ToArray();
}

当我尝试调试它时,我的解决方案似乎没有选择任何东西。

1 个答案:

答案 0 :(得分:6)

尝试一下:

var domains = emails.Select(email => email.Split('@')[1]).Distinct().ToList();