Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlTopReducer.cs / 1 / 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
- WebRequest.cs
- ButtonFlatAdapter.cs
- DataTable.cs
- FactoryRecord.cs
- LassoHelper.cs
- SplineKeyFrames.cs
- CompareValidator.cs
- PreviewPrintController.cs
- ToolboxItemFilterAttribute.cs
- CodeAttributeDeclaration.cs
- QueryCorrelationInitializer.cs
- GroupItemAutomationPeer.cs
- RewritingValidator.cs
- AuthenticatedStream.cs
- CompositeClientFormatter.cs
- WindowsListViewScroll.cs
- IResourceProvider.cs
- DeclarativeCatalogPart.cs
- Adorner.cs
- HttpCachePolicyElement.cs
- TextElementEditingBehaviorAttribute.cs
- Queue.cs
- OperatingSystem.cs
- Serializer.cs
- CapabilitiesPattern.cs
- DataErrorValidationRule.cs
- HttpResponseInternalWrapper.cs
- SqlReorderer.cs
- XmlPreloadedResolver.cs
- WindowsPen.cs
- IDispatchConstantAttribute.cs
- FormView.cs
- HttpRuntime.cs
- EventPrivateKey.cs
- TakeOrSkipQueryOperator.cs
- SafeCryptHandles.cs
- FrameworkPropertyMetadata.cs
- IntPtr.cs
- ImageFormatConverter.cs
- XmlQueryStaticData.cs
- IntSecurity.cs
- DataGridViewRowPrePaintEventArgs.cs
- WebPartMenu.cs
- TabRenderer.cs
- CacheDict.cs
- EdmRelationshipRoleAttribute.cs
- HtmlTernaryTree.cs
- ProjectionCamera.cs
- DirectoryGroupQuery.cs
- StylusPointPropertyId.cs
- BuilderPropertyEntry.cs
- Frame.cs
- Line.cs
- MailMessageEventArgs.cs
- NativeActivityAbortContext.cs
- AttributeParameterInfo.cs
- TextSelectionHelper.cs
- DeclaredTypeElement.cs
- GridItemPatternIdentifiers.cs
- SiteMapNodeItemEventArgs.cs
- XmlSchemaValidationException.cs
- HttpListenerPrefixCollection.cs
- Soap.cs
- EtwTrace.cs
- ContainsRowNumberChecker.cs
- _ChunkParse.cs
- TableRowCollection.cs
- xsdvalidator.cs
- XmlStringTable.cs
- DataSourceProvider.cs
- ResolvePPIDRequest.cs
- FrugalMap.cs
- FixedSOMSemanticBox.cs
- FormatterConverter.cs
- CodePageEncoding.cs
- EncodingNLS.cs
- EntityDataSource.cs
- ClientUtils.cs
- GreenMethods.cs
- CookieParameter.cs
- HttpAsyncResult.cs
- InputBindingCollection.cs
- MethodBuilderInstantiation.cs
- BasicDesignerLoader.cs
- DataGridViewRowsAddedEventArgs.cs
- QueryableFilterRepeater.cs
- SwitchLevelAttribute.cs
- SqlUserDefinedAggregateAttribute.cs
- XsltCompileContext.cs
- XmlDictionaryReaderQuotas.cs
- OwnerDrawPropertyBag.cs
- RulePatternOps.cs
- HtmlElementEventArgs.cs
- AsyncCompletedEventArgs.cs
- ThicknessAnimation.cs
- mda.cs
- XmlTextReaderImpl.cs
- ConditionalExpression.cs
- SQLInt32.cs
- ListMarkerSourceInfo.cs