Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlRemoveConstantOrderBy.cs / 1305376 / SqlRemoveConstantOrderBy.cs
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Data; namespace System.Data.Linq.SqlClient { using System.Data.Linq; ////// SQL doesn't allow constants in ORDER BY. /// /// Worse, an integer constant greater than 0 is treated as ORDER BY ProjectionColumn[i] so the results /// can be unexpected. /// /// The LINQ semantic for OrderBy(o=>constant) is for it to have no effect on the ordering. We enforce /// that semantic here by removing all constant columns from OrderBy. /// internal class SqlRemoveConstantOrderBy { private class Visitor : SqlVisitor { internal override SqlSelect VisitSelect(SqlSelect select) { int i = 0; Listorders = select.OrderBy; while (i < orders.Count) { SqlExpression expr = orders[i].Expression; while (expr.NodeType == SqlNodeType.DiscriminatedType) { expr = ((SqlDiscriminatedType)expr).Discriminator; } switch (expr.NodeType) { case SqlNodeType.Value: case SqlNodeType.Parameter: orders.RemoveAt(i); break; default: ++i; break; } } return base.VisitSelect(select); } } /// /// Remove relative constants from OrderBy. /// internal static SqlNode Remove(SqlNode node) { return new Visitor().Visit(node); } } } // 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
- ApplicationDirectory.cs
- BitmapEffect.cs
- ManagedFilter.cs
- ProcessModule.cs
- AttachedPropertyDescriptor.cs
- VersionedStreamOwner.cs
- VirtualizedItemPattern.cs
- Models.cs
- SchemaComplexType.cs
- EncoderReplacementFallback.cs
- Unit.cs
- StringFormat.cs
- IntegrationExceptionEventArgs.cs
- StateManagedCollection.cs
- CaseCqlBlock.cs
- TypeTypeConverter.cs
- filewebrequest.cs
- propertyentry.cs
- EventLogConfiguration.cs
- AssociatedControlConverter.cs
- ListViewContainer.cs
- NextPreviousPagerField.cs
- DataGridItemEventArgs.cs
- WebRequest.cs
- BitmapEffectCollection.cs
- BinaryMethodMessage.cs
- PropertyTabChangedEvent.cs
- MustUnderstandBehavior.cs
- QueryOptionExpression.cs
- Pen.cs
- Comparer.cs
- WindowProviderWrapper.cs
- Timer.cs
- Int64Storage.cs
- Context.cs
- WindowsTooltip.cs
- SoapObjectReader.cs
- LayoutEditorPart.cs
- ThemeableAttribute.cs
- FileStream.cs
- LineServicesCallbacks.cs
- TextServicesHost.cs
- Repeater.cs
- wmiprovider.cs
- AdornerHitTestResult.cs
- WebPartHelpVerb.cs
- InstanceData.cs
- DBDataPermission.cs
- FileCodeGroup.cs
- StrokeCollection2.cs
- AuthenticateEventArgs.cs
- StringFormat.cs
- ProxyRpc.cs
- ByteStack.cs
- EncryptedHeaderXml.cs
- UIPermission.cs
- Timer.cs
- EntityUtil.cs
- InvalidProgramException.cs
- ImportCatalogPart.cs
- WsatEtwTraceListener.cs
- PointLightBase.cs
- AutomationPeer.cs
- regiisutil.cs
- CompiledQueryCacheKey.cs
- UICuesEvent.cs
- CellPartitioner.cs
- SocketException.cs
- DropSource.cs
- CustomErrorsSectionWrapper.cs
- DataTableMappingCollection.cs
- WorkflowControlEndpoint.cs
- PolicyLevel.cs
- WebSysDisplayNameAttribute.cs
- Object.cs
- MetabaseReader.cs
- InternalPermissions.cs
- InputBuffer.cs
- EvidenceTypeDescriptor.cs
- XamlVector3DCollectionSerializer.cs
- ObjectItemAssemblyLoader.cs
- ScaleTransform.cs
- UnescapedXmlDiagnosticData.cs
- EventMappingSettingsCollection.cs
- FunctionQuery.cs
- ZipIOLocalFileHeader.cs
- Item.cs
- FacetEnabledSchemaElement.cs
- CustomAttribute.cs
- SchemaInfo.cs
- DynamicPropertyHolder.cs
- EventWaitHandle.cs
- DataServiceQueryException.cs
- ErrorFormatter.cs
- DurableErrorHandler.cs
- ElapsedEventArgs.cs
- RemotingSurrogateSelector.cs
- ToolStripArrowRenderEventArgs.cs
- File.cs
- MasterPage.cs