internal override DbExpression AsCqt(bool isTopLevel) { Debug.Assert(m_caseSlotInfo.OutputMember != null, "We only construct real slots not boolean slots"); // The FROM part: FROM (childBlock) Debug.Assert(Children.Count == 1, "CaseCqlBlock can have exactly one child."); var childBlock = Children[0]; var cqt = childBlock.AsCqt(false); // Get the WHERE part only when the expression is not simply TRUE. if (!BoolExpression.EqualityComparer.Equals(WhereClause, BoolExpression.True)) { cqt = cqt.Where(row => WhereClause.AsCqt(row)); } // The SELECT part. return(cqt.Select(row => GenerateProjectionCqt(row, isTopLevel))); }
internal override DbExpression AsCqt(bool isTopLevel) { // Get the FROM part. DbExpression cqt = m_extent.Scan(); // Get the WHERE part only when the expression is not simply TRUE. if (!BoolExpression.EqualityComparer.Equals(WhereClause, BoolExpression.True)) { cqt = cqt.Where(row => WhereClause.AsCqt(row)); } // The SELECT/DISTINCT part. cqt = cqt.Select(row => GenerateProjectionCqt(row, isTopLevel)); if (m_selectDistinct == CellQuery.SelectDistinct.Yes) { cqt = cqt.Distinct(); } return(cqt); }