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
- EventHandlers.cs
- LineSegment.cs
- KerberosRequestorSecurityToken.cs
- ObjectToIdCache.cs
- TrackPointCollection.cs
- View.cs
- GcSettings.cs
- CounterSampleCalculator.cs
- AvTrace.cs
- DictionaryBase.cs
- WebPartCatalogAddVerb.cs
- LongValidator.cs
- Ticks.cs
- ImageFormatConverter.cs
- ResourceReferenceKeyNotFoundException.cs
- HandledEventArgs.cs
- ConnectionPoolManager.cs
- IDispatchConstantAttribute.cs
- AppDomainManager.cs
- Transform3DGroup.cs
- ResourceDictionaryCollection.cs
- SoapReflectionImporter.cs
- EndEvent.cs
- BuildProviderAppliesToAttribute.cs
- MostlySingletonList.cs
- RealProxy.cs
- JavaScriptString.cs
- BulletedListEventArgs.cs
- TagMapInfo.cs
- RuntimeHelpers.cs
- ListMarkerLine.cs
- RemoteX509Token.cs
- WebPartConnectionsDisconnectVerb.cs
- UIElementHelper.cs
- CollectionChangeEventArgs.cs
- EndpointInstanceProvider.cs
- TextSelection.cs
- ValueSerializerAttribute.cs
- LinearQuaternionKeyFrame.cs
- TypeGeneratedEventArgs.cs
- ObjectAssociationEndMapping.cs
- SynchronizedInputHelper.cs
- MultiPageTextView.cs
- StringToken.cs
- HitTestDrawingContextWalker.cs
- CharacterHit.cs
- ContentValidator.cs
- LocatorPart.cs
- XamlHttpHandlerFactory.cs
- ContentTypeSettingClientMessageFormatter.cs
- RuntimeCompatibilityAttribute.cs
- SqlTopReducer.cs
- FilterEventArgs.cs
- PasswordBox.cs
- DigestTraceRecordHelper.cs
- AnnotationHighlightLayer.cs
- BamlRecordReader.cs
- COM2PropertyDescriptor.cs
- PanelDesigner.cs
- Button.cs
- SettingsPropertyCollection.cs
- Accessible.cs
- XmlAttributeOverrides.cs
- HandleExceptionArgs.cs
- BaseInfoTable.cs
- HtmlInputImage.cs
- PersistenceProviderBehavior.cs
- PageEventArgs.cs
- Repeater.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- CultureInfoConverter.cs
- ComboBoxHelper.cs
- OdbcConnectionString.cs
- ListItemCollection.cs
- ListViewItem.cs
- AnnotationElement.cs
- XPathNodeList.cs
- Keywords.cs
- InstallerTypeAttribute.cs
- BaseTemplateParser.cs
- DataGridPageChangedEventArgs.cs
- GridViewRow.cs
- DummyDataSource.cs
- IdentitySection.cs
- TypeConverterMarkupExtension.cs
- SecurityMessageProperty.cs
- OdbcDataReader.cs
- AutomationPropertyInfo.cs
- TextProviderWrapper.cs
- WebPartUtil.cs
- OleDbCommand.cs
- DiscreteKeyFrames.cs
- Calendar.cs
- Util.cs
- ZeroOpNode.cs
- RunWorkerCompletedEventArgs.cs
- ToolStripOverflowButton.cs
- ProcessModuleCollection.cs
- TraceUtility.cs
- CodeThrowExceptionStatement.cs