First you need to add the User Role field to your contacts in sitecore_analytics_index. In order to do that you should add a new Computed Field into <fields hint="raw:AddComputedIndexField">
section of Sitecore.ContentSearch.Lucene.Index.Analytics.config
(I assume you're using Lucene).
Here's example:
<field fieldName="Contact.ProfileProperties.UserRole" emptyString="_EMPTY_" nullValue="_NULL_" storageType="YES" indexType="UNTOKENIZED">Your.Type.Name, Your.Assembly</field>
Your type should get the role of the indexed user by id.
After that add a new condition named "UserRole" to /sitecore/system/Settings/Rules/Definitions/Elements/Segment Builder where field "Text" would be:
where the userrole [operatorid,StringOperator,,compares to] [value,,,specific userrole]
And the "Type" points to your custom class, like the following:
public class UserRoleCondition<T> : TypedQueryableStringOperatorCondition<T, IndexedContact> where T : VisitorRuleContext<IndexedContact>
{
protected override Expression<Func<IndexedContact, bool>> GetResultPredicate(T ruleContext)
{
var userrole = this.Value ?? string.Empty;
return
this.GetCompareExpression(
c => (string)c[(ObjectIndexerKey)"contact.profileproperties.userrole"], userrole);
}
}
Now you're able to use the new User Role condition in segmentation for your Segmented List.