SqlTopReducer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlTopReducer.cs / 1305376 / SqlTopReducer.cs

                            using System; 
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Reflection;
using System.Data.Linq; 
using System.Data.Linq.Provider;
using System.Linq; 
 
namespace System.Data.Linq.SqlClient {
 
    internal class SqlTopReducer {

        internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) {
            return new Visitor(annotations, sql).Visit(node); 
        }
 
        class Visitor : SqlVisitor { 
            SqlNodeAnnotations annotations;
            SqlFactory sql; 

            internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) {
                this.annotations = annotations;
                this.sql = sql; 
            }
 
            internal override SqlSelect VisitSelect(SqlSelect select) { 
                base.VisitSelect(select);
                if (select.Top != null) { 
                    if (select.Top.NodeType == SqlNodeType.Value) {
                        SqlValue val = (SqlValue)select.Top;
                        // convert to literal value for SQL2K compatibility
                        if (val.IsClientSpecified) { 
                            select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression);
                        } 
                    } 
                    else {
                        // cannot be converted to literal value. note that this select is not SQL2K compatible 
                        this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000));
                    }
                }
                return select; 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System; 
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Reflection;
using System.Data.Linq; 
using System.Data.Linq.Provider;
using System.Linq; 
 
namespace System.Data.Linq.SqlClient {
 
    internal class SqlTopReducer {

        internal static SqlNode Reduce(SqlNode node, SqlNodeAnnotations annotations, SqlFactory sql) {
            return new Visitor(annotations, sql).Visit(node); 
        }
 
        class Visitor : SqlVisitor { 
            SqlNodeAnnotations annotations;
            SqlFactory sql; 

            internal Visitor(SqlNodeAnnotations annotations, SqlFactory sql) {
                this.annotations = annotations;
                this.sql = sql; 
            }
 
            internal override SqlSelect VisitSelect(SqlSelect select) { 
                base.VisitSelect(select);
                if (select.Top != null) { 
                    if (select.Top.NodeType == SqlNodeType.Value) {
                        SqlValue val = (SqlValue)select.Top;
                        // convert to literal value for SQL2K compatibility
                        if (val.IsClientSpecified) { 
                            select.Top = sql.Value(val.ClrType, val.SqlType, val.Value, false, val.SourceExpression);
                        } 
                    } 
                    else {
                        // cannot be converted to literal value. note that this select is not SQL2K compatible 
                        this.annotations.Add(select.Top, new SqlServerCompatibilityAnnotation(Strings.SourceExpressionAnnotation(select.Top.SourceExpression), SqlProvider.ProviderMode.Sql2000));
                    }
                }
                return select; 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK