Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save weirdyang/512ca7edcbec594f1ac7ba0d531b5f83 to your computer and use it in GitHub Desktop.

Select an option

Save weirdyang/512ca7edcbec594f1ac7ba0d531b5f83 to your computer and use it in GitHub Desktop.
SF_10.1, SF_10.2, SF_11.0, SF_11.1, SF_11.2, SF_12.0, SF_12.1, SF_12.2, SF_13.0, SF_13.1, SF_13.2, SF_13.3 - https://docs.sitefinity.com/example-filter-dynamic-content-items-by-dynamic-field
using System;
using System.Linq;
using Telerik.Sitefinity.Data.Linq.Dynamic;
using Telerik.Sitefinity.DynamicModules;
using Telerik.Sitefinity.DynamicModules.Model;
using Telerik.Sitefinity.Modules.Libraries;
using Telerik.Sitefinity.RelatedData;
using Telerik.Sitefinity.Taxonomies;
using Telerik.Sitefinity.Taxonomies.Model;
using Telerik.Sitefinity.Utilities.TypeConverters;
namespace Telerik.Sitefinity.Documentation.CodeSnippets.SFTools.TemplateBuilder.HierarchicalDM
{
public partial class FilterDynamicContentItems
{
private void FilterDynamicContent()
{
// Get an instance of the dynamic module manager
var providerName = String.Empty;
DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager(providerName);
// Resolve dynamic content item types
Type movieType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.MovieCollection.Movie");
Type actorType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.MovieCollection.Actor");
// Get collection of movies
var allMovies = dynamicModuleManager.GetDataItems(movieType);
// Get collection of actors
var allActors = dynamicModuleManager.GetDataItems(actorType);
// Filter movie collection by ShortText field
var moviesByTitle = allMovies.Where("Title = \"Some Title\"");
var moviesByTitleAlternative = allMovies.Where("Title.Contains(\"Some Title\")");
var moviesByTitleAndStatus = allMovies.Where("Title.Contains(\"Some Title\") && Status = \"Live\"");
// Filter movie collection by a Number field
var moviesFrom2003 = allMovies.Where("Year = 2003");
var moviesBefore2000 = allMovies.Where("Year < 2000");
// Filter movie collection by a YesNo field
var moviesIn3D = allMovies.Where("ShotIn3D = true");
var moviesNotIn3D = allMovies.Where("ShotIn3D = false");
// Filter movie collection by a Choices field
var dramaMovies = allMovies.Where("Genre = \"Drama\"");
var actionMovies = allMovies.Where("Genre = \"Action\"");
var comedyMovies = allMovies.Where("Genre = \"Comedy\"");
// Filter movie collection by Classification field
var taxonomyManager = TaxonomyManager.GetManager();
var tags = taxonomyManager.GetTaxonomies<FlatTaxonomy>().FirstOrDefault(x => x.Title == "Tags");
var tag = tags.Taxa.FirstOrDefault(x => x.Title == "Some movie tag");
var moviesByTag = allMovies.Where("Tags.Contains((" + tag.Id.ToString() + "))");
// Filter movie collection by RelatedData field
var actor = allActors.Where("Name.Contains(\"Actor Name\")").FirstOrDefault();
var moviesByActor = actor.GetRelatedParentItems(movieType.FullName, providerName, "Actors").OfType<DynamicContent>();
// Filter movie collection by RelatedMedia field
var image = LibrariesManager.GetManager().GetImages().FirstOrDefault();
var moviesByPoster = image.GetRelatedParentItems(movieType.FullName, providerName, "Poster").OfType<DynamicContent>();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment