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 / 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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MultiPageTextView.cs
- AvTraceFormat.cs
- SamlAdvice.cs
- TextSelectionProcessor.cs
- ExpressionEditorAttribute.cs
- ClientRuntimeConfig.cs
- CodeObject.cs
- EventWaitHandleSecurity.cs
- SafeCertificateStore.cs
- WinEventWrap.cs
- SHA512Managed.cs
- TreeViewAutomationPeer.cs
- XsdBuildProvider.cs
- SafeSecurityHandles.cs
- TextTreeNode.cs
- ToolStripSettings.cs
- Path.cs
- Timer.cs
- PieceNameHelper.cs
- DocumentViewerBase.cs
- Sql8ConformanceChecker.cs
- BufferedWebEventProvider.cs
- EntityStoreSchemaFilterEntry.cs
- x509utils.cs
- QilGenerator.cs
- CompoundFileStreamReference.cs
- PathData.cs
- ComplexBindingPropertiesAttribute.cs
- DeferredSelectedIndexReference.cs
- AlignmentYValidation.cs
- XsltException.cs
- CommandHelpers.cs
- PkcsUtils.cs
- URL.cs
- LineGeometry.cs
- SR.cs
- DebuggerAttributes.cs
- AttachedAnnotation.cs
- CounterSet.cs
- ToolStripSeparatorRenderEventArgs.cs
- AsyncResult.cs
- EditBehavior.cs
- SecurityContextTokenValidationException.cs
- WindowsListViewScroll.cs
- IDispatchConstantAttribute.cs
- XamlReader.cs
- GuidTagList.cs
- ContractMethodParameterInfo.cs
- RSAProtectedConfigurationProvider.cs
- JsonSerializer.cs
- OleDbCommandBuilder.cs
- XmlSchemaGroup.cs
- SemanticBasicElement.cs
- NativeMethodsOther.cs
- FontFamily.cs
- ParserContext.cs
- AsymmetricKeyExchangeDeformatter.cs
- AutomationElement.cs
- PathFigureCollection.cs
- TemplateContainer.cs
- HtmlShim.cs
- BooleanFacetDescriptionElement.cs
- JpegBitmapDecoder.cs
- ComponentResourceKeyConverter.cs
- SEHException.cs
- LinqDataSource.cs
- CodeIdentifiers.cs
- BasicExpressionVisitor.cs
- Paragraph.cs
- TextTreeInsertUndoUnit.cs
- _HTTPDateParse.cs
- TraceUtility.cs
- SimpleMailWebEventProvider.cs
- AdornedElementPlaceholder.cs
- Semaphore.cs
- DataGridViewCellEventArgs.cs
- HierarchicalDataBoundControlAdapter.cs
- HeaderUtility.cs
- SoundPlayerAction.cs
- AbsoluteQuery.cs
- GridViewRowCollection.cs
- FileLoadException.cs
- CssStyleCollection.cs
- PageCatalogPartDesigner.cs
- RankException.cs
- TabPage.cs
- XmlSerializationWriter.cs
- WebServiceClientProxyGenerator.cs
- WebControl.cs
- PageOrientation.cs
- Path.cs
- TransformCollection.cs
- FixedPageProcessor.cs
- StatusBarDesigner.cs
- DataMisalignedException.cs
- SurrogateSelector.cs
- CheckPair.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- DecimalFormatter.cs
- HashFinalRequest.cs