Filter dynamic content items by dynamic field

When working with dynamic content items with dynamic fields, you may need to display only a portion of these content items in the frontend. With Sitefinity CMS, you can filter programmatically the content items by their dynamic fields.

For example, you have a Movie collection dynamic content item and you may need to filter this collection to show only movies from a particular genre, designated by a dynamic field. For more details and sample code for this example, see Example: Filter dynamic content items by dynamic field.

This article describes the concept and procedure how to filter dynamic content items by a dynamic field.

Check whether field exists

Before filtering items by a field, we recommend to check if the dynamic field exists and is not removed, for example. The following code demonstrates how to do this:

Filter dynamic content items

Before you begin filtering your dynamic content items, you need to get an instance of the DynamicModuleManager class.

Next, you need to get the type of the dynamic content item by using the TypeResolutionService class.

To filter dynamic content items, you use IQueryable extension methods - the Where() method and pass a string predicate. To do this, you must include the following namespace in your code:

  • System.Linq;
  • Telerik.Sitefinity.Data.Linq.Dynamic;

By using the Where() extension method, execute complex string predicates.

In addition, you can filter dynamic content items by the following dynamic field types:

  • Number
    The string predicate for the extension method must include the name of the Number field and a decimal value.
  • Yes/No
    The string predicate for the extension method must include the name of the 
    Yes/No field and a Boolean value.
  • Choices
    The string predicate for the extension method must include the name of the 
    Choices field and the Choices value.
  • Classification
    The string predicate for the extension method must include the name of the 
    Classification field and the ID of the taxon.
  • Related data
    To filter dynamic content items by a related data field for another dynamic content item, you use the GetRelatedParentItems extension method.
  • Related media
    To filter dynamic content items by a related media field (for example, an image), you use the GetRelatedParentItems extension method.     

Was this article helpful?