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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Authorization.cs
- FrameworkPropertyMetadata.cs
- TypographyProperties.cs
- HwndTarget.cs
- TitleStyle.cs
- WizardStepCollectionEditor.cs
- ObjectDataSourceMethodEditor.cs
- PointLightBase.cs
- TargetInvocationException.cs
- DataContractFormatAttribute.cs
- ComponentCollection.cs
- ImportContext.cs
- Util.cs
- RankException.cs
- PersonalizableTypeEntry.cs
- XmlSchemaAnnotated.cs
- DataPagerFieldItem.cs
- CustomError.cs
- SqlException.cs
- NullableFloatSumAggregationOperator.cs
- TemplatedWizardStep.cs
- AccessDataSource.cs
- ComponentCodeDomSerializer.cs
- BitmapEffectGroup.cs
- TypeElement.cs
- TextRangeProviderWrapper.cs
- BidPrivateBase.cs
- SHA1Managed.cs
- WebHttpBindingElement.cs
- HtmlInputButton.cs
- DrawingImage.cs
- ObjectManager.cs
- MethodImplAttribute.cs
- SettingsProperty.cs
- PropertyEmitterBase.cs
- DigitShape.cs
- Bind.cs
- StringToken.cs
- InheritanceRules.cs
- WebPartDisplayMode.cs
- MemberDomainMap.cs
- ChangePassword.cs
- DataGridItem.cs
- RegionData.cs
- PageSettings.cs
- HideDisabledControlAdapter.cs
- HierarchicalDataSourceIDConverter.cs
- ItemType.cs
- HtmlElementCollection.cs
- SQLByte.cs
- FrameworkElementFactoryMarkupObject.cs
- DataRowView.cs
- DataSetSchema.cs
- OLEDB_Util.cs
- ZipIOExtraFieldZip64Element.cs
- DataGridAddNewRow.cs
- DatagridviewDisplayedBandsData.cs
- AddressingVersion.cs
- ThumbButtonInfo.cs
- ModuleBuilder.cs
- SqlCacheDependencyDatabase.cs
- QuaternionAnimation.cs
- WebPartManagerInternals.cs
- DateTimeStorage.cs
- RoutedEventArgs.cs
- BamlLocalizationDictionary.cs
- PageFunction.cs
- DrawingContextDrawingContextWalker.cs
- WebPartUserCapability.cs
- DockProviderWrapper.cs
- ConstraintStruct.cs
- SQLDecimalStorage.cs
- EditBehavior.cs
- WindowsPrincipal.cs
- VirtualDirectoryMappingCollection.cs
- XmlExpressionDumper.cs
- WebZone.cs
- OrderPreservingPipeliningSpoolingTask.cs
- XmlBoundElement.cs
- Events.cs
- WorkflowQueueInfo.cs
- TileBrush.cs
- Visitor.cs
- RegexBoyerMoore.cs
- CompatibleIComparer.cs
- RelationshipDetailsCollection.cs
- XmlArrayAttribute.cs
- ThemeConfigurationDialog.cs
- PerformanceCounterManager.cs
- Line.cs
- WindowHideOrCloseTracker.cs
- AttributeConverter.cs
- Pts.cs
- DataGridViewCellParsingEventArgs.cs
- GridEntryCollection.cs
- HttpConfigurationContext.cs
- RtfFormatStack.cs
- PropertyBuilder.cs
- DropDownList.cs
- Zone.cs