2016-04-12 2 views
1

В части моего кода я конвертирую список IEnumerable в строку.IEnumerable select all except string

String.Join(", ", e.User.Roles.Select(o => o.ToString())) 

решает, например:

Admin, @everyone 

Это использование Discord.Net SDK, где Роли является IEnumerable, содержащий все 'ряды' пользователя.

Существует роль по умолчанию, которую каждый пользователь, кроме которого я хочу удалить из строки. Роль по умолчанию может быть вызвана с помощью

e.Server.EveryoneRole 

Моя идея заключалась в использовании Except фильтровать роль по умолчанию, что привело к

System.Linq.Enumerable+<ExceptIterator>d__72`1[System.Char], System.Linq.Enumerable+<ExceptIterator>d__72`1[System.Char] 

или просто отфильтровывая @everyone также хорошо в моем случае.

+0

Можете ли вы показать код, который вы пробовали? – vendettamit

+0

Где вы это видите? В отладчике? Отладчик не является отличным местом для просмотра результатов запроса Linq - вам нужно его материализовать в список или какую-либо другую структуру. –

+0

Каков тип 'e.User.Roles'? Можете ли вы также показать свой код? Особенно код '.Except (...)'. – Enigmativity

ответ

3

Разве вы не можете просто использовать where, например, следующее?

String.Join(", ", e.User.Roles 
         .Where(o => o != e.Server.EveveryoneRole) 
         .Select(o => o.ToString())) 
+0

Спасибо, я не думал об использовании где, отлично работал – TehPirate

0

Использовать линию, где содержится статья. Что-то вроде:

String.Join(", ", e.User.Roles.Select(o => o.ToString()).Where(s => s != e.Server.EveveryoneRole)