using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq.Expressions; using System.Linq; using System.Reflection; using System.Text; using System.Data.Linq; namespace System.Data.Linq.SqlClient { // SQL Client extensions to ExpressionType internal enum InternalExpressionType { Known = 2000, LinkedTable = 2001 } abstract internal class InternalExpression : Expression { #pragma warning disable 618 // Disable the 'obsolete' warning. internal InternalExpression(InternalExpressionType nt, Type type) : base ((ExpressionType)nt, type) { } #pragma warning restore 618 internal static KnownExpression Known(SqlExpression expr) { return new KnownExpression(expr, expr.ClrType); } internal static KnownExpression Known(SqlNode node, Type type) { return new KnownExpression(node, type); } } internal sealed class KnownExpression : InternalExpression { SqlNode node; internal KnownExpression(SqlNode node, Type type) : base(InternalExpressionType.Known, type) { this.node = node; } internal SqlNode Node { get { return this.node; } } } internal sealed class LinkedTableExpression : InternalExpression { private SqlLink link; private ITable table; internal LinkedTableExpression(SqlLink link, ITable table, Type type) : base(InternalExpressionType.LinkedTable, type) { this.link = link; this.table = table; } internal SqlLink Link { get {return this.link;} } internal ITable Table { get {return this.table;} } } }