Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlRemoveConstantOrderBy.cs / 1 / 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. 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
- TableAutomationPeer.cs
- BufferedResponseStream.cs
- TreeIterators.cs
- ChangeInterceptorAttribute.cs
- LateBoundBitmapDecoder.cs
- FileSystemInfo.cs
- FontSourceCollection.cs
- StylusTip.cs
- RequestNavigateEventArgs.cs
- LocalIdKeyIdentifierClause.cs
- HttpCapabilitiesBase.cs
- FolderBrowserDialog.cs
- HttpProfileGroupBase.cs
- ListBox.cs
- Visitor.cs
- CodeDomSerializerException.cs
- ItemMap.cs
- XmlAutoDetectWriter.cs
- BoolExpression.cs
- CodeDomConfigurationHandler.cs
- HMACSHA256.cs
- x509utils.cs
- MulticastDelegate.cs
- FixedStringLookup.cs
- HtmlImage.cs
- IntSecurity.cs
- SqlFileStream.cs
- EventDescriptorCollection.cs
- ContextMarshalException.cs
- SqlSelectStatement.cs
- RequestCachePolicy.cs
- CLSCompliantAttribute.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- ExpressionBuilderContext.cs
- TypeAccessException.cs
- BulletedList.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- SingleSelectRootGridEntry.cs
- XmlSchemaCollection.cs
- XPathDocumentNavigator.cs
- BlockCollection.cs
- HierarchicalDataSourceControl.cs
- UncommonField.cs
- TextWriterTraceListener.cs
- TextTreeRootTextBlock.cs
- HtmlLiteralTextAdapter.cs
- SqlCacheDependency.cs
- WebEventCodes.cs
- PersistencePipeline.cs
- DataContractSerializer.cs
- NetworkInformationPermission.cs
- BaseAppDomainProtocolHandler.cs
- SqlRemoveConstantOrderBy.cs
- TextSelectionHelper.cs
- HtmlControl.cs
- JsonStringDataContract.cs
- BuildDependencySet.cs
- MimeObjectFactory.cs
- ISCIIEncoding.cs
- Preprocessor.cs
- BitmapEffectCollection.cs
- XmlParser.cs
- Semaphore.cs
- Util.cs
- EdmProperty.cs
- WinFormsUtils.cs
- StreamInfo.cs
- CompilerWrapper.cs
- DataGridColumnHeaderAutomationPeer.cs
- WindowsTooltip.cs
- FontEmbeddingManager.cs
- HostedNamedPipeTransportManager.cs
- BulletDecorator.cs
- LinkButton.cs
- WindowsToolbar.cs
- WhitespaceRuleLookup.cs
- ExceptionUtility.cs
- BaseParaClient.cs
- Component.cs
- AncestorChangedEventArgs.cs
- UserCancellationException.cs
- URLAttribute.cs
- TextTreeExtractElementUndoUnit.cs
- WebServiceClientProxyGenerator.cs
- CollectionViewSource.cs
- OrthographicCamera.cs
- BuildProvider.cs
- LayoutDump.cs
- DownloadProgressEventArgs.cs
- AspCompat.cs
- RemoveFromCollection.cs
- PageCatalogPart.cs
- ExpressionConverter.cs
- DesignerOptionService.cs
- DoubleAnimationClockResource.cs
- autovalidator.cs
- OleDbCommand.cs
- DataBindingCollectionEditor.cs
- MetaTable.cs
- ResolveNameEventArgs.cs