A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Jonas Lindau
Mar 14, 2014
  1891
(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
Looking back at Optimizely in 2025

Explore Optimizely's architectural shift in 2025, which removed coordination cost through a unified execution loop. Learn how agentic Opal AI and...

Andy Blyth | Dec 17, 2025 |

Cleaning Up Content Graph Webhooks in PaaS CMS: Scheduled Job

The Problem Bit of a niche issue, but we are building a headless solution where the presentation layer is hosted on Netlify, when in a regular...

Minesh Shah (Netcel) | Dec 17, 2025

A day in the life of an Optimizely OMVP - OptiGraphExtensions v2.0: Enhanced Search Control with Language Support and Synonym Slots

Supercharge your Optimizely Graph search experience with powerful new features for multilingual sites and fine-grained search tuning. As search...

Graham Carr | Dec 16, 2025

A day in the life of an Optimizely OMVP - Optimizely Opal: Specialized Agents, Workflows, and Tools Explained

The AI landscape in digital experience platforms has shifted dramatically. At Opticon 2025, Optimizely unveiled the next evolution of Optimizely Op...

Graham Carr | Dec 16, 2025