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
- ProcessModelInfo.cs
- CommentEmitter.cs
- XslNumber.cs
- EventRoute.cs
- File.cs
- HostingEnvironmentException.cs
- DataGridViewRowEventArgs.cs
- sqlpipe.cs
- MenuItemStyle.cs
- DebugHandleTracker.cs
- ZipIORawDataFileBlock.cs
- SamlAttributeStatement.cs
- XhtmlTextWriter.cs
- ColorBuilder.cs
- DbParameterHelper.cs
- CompilerCollection.cs
- ListBoxItem.cs
- ListViewCommandEventArgs.cs
- DynamicPropertyHolder.cs
- CacheRequest.cs
- RemoteWebConfigurationHostStream.cs
- ContentDisposition.cs
- ResourceIDHelper.cs
- StorageScalarPropertyMapping.cs
- DataGridView.cs
- DynamicValidatorEventArgs.cs
- EncoderParameters.cs
- DataRecordInternal.cs
- Pointer.cs
- WizardStepBase.cs
- OleDbRowUpdatedEvent.cs
- Decimal.cs
- ViewCellSlot.cs
- CultureSpecificStringDictionary.cs
- CollectionMarkupSerializer.cs
- HttpGetProtocolReflector.cs
- SerializationStore.cs
- SynchronizationValidator.cs
- XmlSchemaAppInfo.cs
- MemoryPressure.cs
- HashMembershipCondition.cs
- DataPagerField.cs
- SqlDependencyUtils.cs
- FontSource.cs
- OletxCommittableTransaction.cs
- BuildProviderAppliesToAttribute.cs
- SessionSymmetricMessageSecurityProtocolFactory.cs
- Attributes.cs
- WeakRefEnumerator.cs
- Form.cs
- CellIdBoolean.cs
- Margins.cs
- FileClassifier.cs
- _ConnectOverlappedAsyncResult.cs
- TagMapCollection.cs
- FunctionImportElement.cs
- PeerInputChannelListener.cs
- TreeView.cs
- safemediahandle.cs
- PropertyReferenceSerializer.cs
- ReturnEventArgs.cs
- HtmlElement.cs
- PeerDuplexChannelListener.cs
- WebPartDescription.cs
- CreateUserErrorEventArgs.cs
- XmlDataImplementation.cs
- CodeArgumentReferenceExpression.cs
- UnsafeNativeMethods.cs
- AnnotationAdorner.cs
- StatusBarPanel.cs
- TitleStyle.cs
- Debug.cs
- BindingValueChangedEventArgs.cs
- Point.cs
- PolicyStatement.cs
- TextReader.cs
- GeneralTransform2DTo3DTo2D.cs
- EndpointReference.cs
- ClientConvert.cs
- TypeUtils.cs
- ModulesEntry.cs
- BuilderPropertyEntry.cs
- WorkBatch.cs
- MappingMetadataHelper.cs
- DoubleKeyFrameCollection.cs
- wgx_commands.cs
- SQLMoney.cs
- InkCanvasInnerCanvas.cs
- SingleTagSectionHandler.cs
- VisualStyleElement.cs
- IndentedTextWriter.cs
- ToolStripSystemRenderer.cs
- TrackingCondition.cs
- ErrorWrapper.cs
- TableAutomationPeer.cs
- DateRangeEvent.cs
- TextBoxRenderer.cs
- OracleConnectionStringBuilder.cs
- XLinq.cs
- OleDbRowUpdatedEvent.cs