private Sql <ISqlContext> GetTagsSql(string?culture, bool withGrouping = false) { Sql <ISqlContext> sql = Sql() .Select <TagDto>(); if (withGrouping) { sql = sql .AndSelectCount("NodeCount"); } sql = sql .From <TagDto>() .InnerJoin <TagRelationshipDto>().On <TagRelationshipDto, TagDto>((rel, tag) => tag.Id == rel.TagId) .InnerJoin <ContentDto>() .On <ContentDto, TagRelationshipDto>((content, rel) => content.NodeId == rel.NodeId) .InnerJoin <NodeDto>().On <NodeDto, ContentDto>((node, content) => node.NodeId == content.NodeId); if (culture != null && culture != "*") { sql = sql .InnerJoin <LanguageDto>().On <TagDto, LanguageDto>((tag, lang) => tag.LanguageId == lang.Id); } return(sql); }