Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Jonas Lindau
Mar 14, 2014
  1682
(1 votes)

Relate+ - Get distinct values from attributes

Recently I had to figure out a way to get all distinct values from a certain attribute in a Relate+ project. The site uses a lot of attributes on IUser to store local copies of attributes in Active Directory. These attributes are then used mainly for presentation, but know they want to filter on these attributes. Filtering on an attribute is quite easy, the issue showed to be getting distinct values for a certain attribute to for example populate a dropdown.

The only solution I found was to use LINQ on a UserCollection. It works great, but the downside might be performance. Because of this, I figured I create a InitializationModule which load all distinct values from the needed attribute and store them in the cache. Then, all I have to do is getting the list from the cache when needed.

There are many good articles on how to create InitializationModules, so I’m going to leave that part out. But here is how I get all distinct values for the attribute “OrganizationAbbreviation”:

   1: UserCollection Users = CommunitySystem.CurrentContext.DefaultSecurity.GetUsers();
   2: string[] Units = (from CurrentUser in Users where CurrentUser.GetAttributeValue<string>("OrganizationAbbreviation") != null select CurrentUser.GetAttributeValue<string>("OrganizationAbbreviation")).Distinct().OrderBy(x => x).ToArray<string>();

Now I can easily populate all my dropdown-lists with the organizational units!

Mar 14, 2014

Comments

valdis
valdis Mar 14, 2014 01:15 PM

Even going further - you may want to get rid of "stringly" typed interface when working with Relate attributes. This may become handy tool: https://github.com/Geta/Community.EntityAttributeBuilder

Please login to comment.
Latest blogs
Category Management - Going old school & trying not to break anything.

You wait a hour for a bus and then 3 come at once. The same thing happened to me recently where multiple clients with ageing websites (Opti 11) and...

Matt Pallatt | Apr 7, 2025

Show/hide blocks and properties based on selected site in multi-site solution

Optimizely PaaS CMS has a great support for multi-site solutions which can additionally be extended with the custom code. For example, we can enhan...

Tomek Juranek | Apr 6, 2025

Experimentation strategies with Optimizely: Web, Edge, and Feature Experimentation

Experimentation is a cornerstone of data-driven decision-making, and Optimizely offers multiple ways to run experiments across your digital...

Minesh Shah (Netcel) | Apr 5, 2025