Jonas Lindau
Mar 14, 2014
visibility 2184
star star star star star
(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

error Please login to comment.
Latest blogs
Surviving a Dirty Feed. Part 3: Error Handling and Event Batching

Committing a 250,000-row Optimizely catalog import row by row, returning a per-row failure report, and coalescing catalog events into one per batch.

Stanisław Szołkowski | Oct 16, 2026 |

Building UI Extensions for Optimizely SaaS CMS

Introduction Developers have been extending the functionality of Optimizely PaaS CMS for years using addons built in C# and deployed as NuGet...

Mark Stott | Oct 15, 2026

Cheapskate AI Translator: Because Translation Should Not Require a Second Mortgage

There is a particular kind of software project that begins with a detailed architecture document, a product roadmap, and a carefully assembled...

Linh Doan Cuu | Oct 15, 2026

Computed Fields in CMS 13 Content Contracts with Optimizely Graph

Content Contracts in Optimizely CMS 13 allow different content types to share a common structure when querying Optimizely Graph. But what if the...

Mardy | Oct 14, 2026