List<string> ls = new List<string>();
Feed<Contact> f = cr.GetContacts();
foreach (Contact e in f.Entries)
foreach (EMail el in e.Emails)
if (!(ls.Contains(el.Address.Substring(el.Address.LastIndexOf('@')+1))))
ls.Add(el.Address.Substring(el.Address.LastIndexOf('@')+1));
在上面的代码中,我试图获得不同的电子邮件ID域名,但是我的逻辑是什么问题?
测试数据:
INP:
abca@gmail.com
sdafdf@yahoo.com
sdfs@gmail.com
ssdf@gmail.com
sdfsf@someOtherDomain.com
... 这样20,000个条目
我需要获得DISTINCT
个域名
但我的o / p是
gmail.com
yahoo.com
gmail.com
gmail.com
someOtherDomain.com
实际上它应该是:
gmail.com yahoo.com someOtherDomain.com
答案 0 :(得分:1)
这里的实际错误并不明显,但这是一种效率低下且难以实现的方式。我建议你试试这个:
var domains = (from contact in cr.GetContacts().Entries
from email in contact.Emails
let address = email.Address
select address.Substring(address.LastIndexOf('@') + 1))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
话虽如此,您的原始代码确实应该有效。你能提供一些失败的测试数据吗?