1 //---------------------------------------------------------------------
2 // <copyright file="CaseExpr.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
10 namespace System.Data.Common.EntitySql.AST
13 using System.Globalization;
14 using System.Collections;
15 using System.Collections.Generic;
18 /// Represents the Seached Case Expression - CASE WHEN THEN [ELSE] END.
20 internal sealed class CaseExpr : Node
22 private readonly NodeList<WhenThenExpr> _whenThenExpr;
23 private readonly Node _elseExpr;
26 /// Initializes case expression without else sub-expression.
28 /// <param name="whenThenExpr">whenThen expression list</param>
29 internal CaseExpr(NodeList<WhenThenExpr> whenThenExpr)
30 : this(whenThenExpr, null)
35 /// Initializes case expression with else sub-expression.
37 /// <param name="whenThenExpr">whenThen expression list</param>
38 /// <param name="elseExpr">else expression</param>
39 internal CaseExpr(NodeList<WhenThenExpr> whenThenExpr, Node elseExpr)
41 _whenThenExpr = whenThenExpr;
46 /// Returns the list of WhenThen expressions.
48 internal NodeList<WhenThenExpr> WhenThenExprList
50 get { return _whenThenExpr; }
54 /// Returns the optional Else expression.
56 internal Node ElseExpr
58 get { return _elseExpr; }
63 /// Represents the when then sub expression.
65 internal class WhenThenExpr : Node
67 private readonly Node _whenExpr;
68 private readonly Node _thenExpr;
71 /// Initializes WhenThen sub-expression.
73 /// <param name="whenExpr">When expression</param>
74 /// <param name="thenExpr">Then expression</param>
75 internal WhenThenExpr(Node whenExpr, Node thenExpr)
82 /// Returns When expression.
84 internal Node WhenExpr
86 get { return _whenExpr; }
90 /// Returns Then Expression.
92 internal Node ThenExpr
94 get { return _thenExpr; }