2013-12-13 4 views
-1

i wanna actuelly сортировать список с адресами электронной почты по их домену. Допустим, для примера:Отсортировать список адресов электронной почты по домену

var list = new List<string>(); 
list.Add([email protected]); 
list.Add([email protected]); 
list.Add([email protected]); 

поэтому результат должен быть:

[email protected] 
[email protected] 
[email protected] 

является то, что можно без разделения адресов электронной почты?

+0

Вы должны использовать свой почтовый адрес как строку, например '' [email protected]''. –

+0

Я знаю, что я должен это делать, но я просто набрал его здесь ... извините .. –

ответ

0

Вы можете использовать Regex, чтобы получить домен из писем:

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

, потому что:

var temp = Regex.Match("[email protected]", "@.*").Value; 

рассказывает: принять все после @ знак (включая @ знак), поэтому temp будет @hotmail.com в этом случае.

+0

actuelly это было то, что мне нужно в программе :) все ответы работали, но я думаю, что это лучший способ сделать это aslong, у меня есть строка для моих писем ... но проблема в том, что проблема сортирует все, кроме как в конце (после x, y, z), там он снова начинается и не сортируется, и это не странно, я не могу скопировать адреса, где это происходит здесь из-за неприкосновенности конфиденциальности. ive список из 1,5 тыс. электронных писем вы знаете, почему это происходит? –

+0

yline.com ymail.com ymail.com .zakpharma.at .zaltech.com zebe.at zumaltenweinstock.at strein.cc hotmail.fr interspot.at , как это раньше, что происходит его все отлично отсортировано .. как я хочу, но последнее, скажем, 100 "адресов больше не сортируются, и я не понимаю почему –

4

Попробуйте это:

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

будет сортировать адреса электронной почты почтового сервера

+0

Вау ! сила LINQ – Shaharyar

+0

благодаря этой быстрой помощи. было именно то, что мне было нужно большое спасибо –

+0

Ну, в этом случае больше силы «MailAddress». – Rawling

1

Вы можете использовать LINQ для этого. Однако это абсолютно необходимо, чтобы вы разделяете адрес электронной почты:

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

wudzik ответил на это allready :) Я знал, как это работает с расщеплением, поэтому я спросил, не разбивая :) И это работает, но спасибо за Ур помогите в любом случае! –

Смежные вопросы