Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / WebControls / Expressions / ExpressionHelper.cs / 1305376 / ExpressionHelper.cs
#if ORYX_VNEXT namespace Microsoft.Web.Data.UI.WebControls.Expressions { #else namespace System.Web.UI.WebControls.Expressions { #endif using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; internal static class ExpressionHelper { public static Expression GetValue(Expression exp) { Type realType = GetUnderlyingType(exp.Type); if (realType == exp.Type) { return exp; } return Expression.Convert(exp, realType); } public static Type GetUnderlyingType(Type type) { // Get the type from Nullable types if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) { return type.GetGenericArguments()[0]; } return type; } public static object BuildObjectValue(object value, Type type) { #if ORYX_VNEXT return Microsoft.Web.Data.UI.WebControls.DataSourceHelper.BuildObjectValue(value, type, String.Empty); #else return System.Web.UI.WebControls.DataSourceHelper.BuildObjectValue(value, type, String.Empty); #endif } public static Expression CreatePropertyExpression(Expression parameterExpression, string propertyName) { if (parameterExpression == null) { return null; } if (String.IsNullOrEmpty(propertyName)) { return null; } Expression propExpression = null; string[] props = propertyName.Split('.'); foreach (var p in props) { if (propExpression == null) { propExpression = Expression.PropertyOrField(parameterExpression, p); } else { propExpression = Expression.PropertyOrField(propExpression, p); } } return propExpression; } public static IQueryable Where(this IQueryable source, LambdaExpression lambda) { return Call(source, "Where", lambda, source.ElementType); } public static IQueryable Call(this IQueryable source, string queryMethod, Type[] genericArgs, params Expression[] arguments) { if (source == null) { throw new ArgumentNullException("source"); } return source.Provider.CreateQuery( Expression.Call( typeof(Queryable), queryMethod, genericArgs, arguments)); } public static IQueryable Call(this IQueryable source, string queryableMethod, LambdaExpression lambda, params Type[] genericArgs) { if (source == null) { throw new ArgumentNullException("source"); } return source.Provider.CreateQuery( Expression.Call( typeof(Queryable), queryableMethod, genericArgs, source.Expression, Expression.Quote(lambda))); } public static Expression Or(IEnumerableexpressions) { Expression orExpression = null; foreach (Expression e in expressions) { if (e == null) { continue; } if (orExpression == null) { orExpression = e; } else { orExpression = Expression.OrElse(orExpression, e); } } return orExpression; } public static Expression And(IEnumerable expressions) { Expression andExpression = null; foreach (Expression e in expressions) { if (e == null) { continue; } if (andExpression == null) { andExpression = e; } else { andExpression = Expression.AndAlso(andExpression, e); } } return andExpression; } } } // 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
- FrameworkElement.cs
- BamlRecordReader.cs
- LinearKeyFrames.cs
- NodeInfo.cs
- OdbcPermission.cs
- ToolStripOverflow.cs
- ListSortDescription.cs
- FormattedText.cs
- AssemblyCollection.cs
- Route.cs
- XmlSchemaSimpleTypeList.cs
- PeerInvitationResponse.cs
- SqlTypeConverter.cs
- sqlinternaltransaction.cs
- WorkflowServiceHost.cs
- RuntimeResourceSet.cs
- SecureStringHasher.cs
- PriorityRange.cs
- OperationContractAttribute.cs
- BufferedGraphics.cs
- Misc.cs
- entityreference_tresulttype.cs
- AuthorizationSection.cs
- WebZone.cs
- UseLicense.cs
- SettingsBase.cs
- ObservableCollectionDefaultValueFactory.cs
- Pipe.cs
- SimpleFieldTemplateFactory.cs
- ProcessThread.cs
- WebServiceMethodData.cs
- LinkedList.cs
- DurationConverter.cs
- XmlStringTable.cs
- MessagePropertyFilter.cs
- Request.cs
- IgnoreSectionHandler.cs
- CapabilitiesRule.cs
- ReachDocumentReferenceCollectionSerializerAsync.cs
- FileDialogCustomPlace.cs
- StorageSetMapping.cs
- DataGrid.cs
- CodeExpressionStatement.cs
- StrokeCollection2.cs
- StrokeSerializer.cs
- QuotedPrintableStream.cs
- LinkDesigner.cs
- UserNameSecurityTokenParameters.cs
- UseLicense.cs
- UriTemplateMatch.cs
- XPathArrayIterator.cs
- SecUtil.cs
- ExpressionConverter.cs
- ActivityTypeDesigner.xaml.cs
- ValidatorAttribute.cs
- GroupItemAutomationPeer.cs
- PageAsyncTaskManager.cs
- ParsedRoute.cs
- Registry.cs
- WebMethodAttribute.cs
- CriticalExceptions.cs
- DataControlFieldHeaderCell.cs
- SqlDependency.cs
- CorePropertiesFilter.cs
- NullRuntimeConfig.cs
- Section.cs
- SpecularMaterial.cs
- cryptoapiTransform.cs
- WebRequestModuleElementCollection.cs
- Rectangle.cs
- VersionPair.cs
- AddInControllerImpl.cs
- ModelTreeEnumerator.cs
- TextSimpleMarkerProperties.cs
- BulletDecorator.cs
- BufferBuilder.cs
- SourceChangedEventArgs.cs
- PageCatalogPart.cs
- PopupRoot.cs
- CacheModeValueSerializer.cs
- BaseTemplateCodeDomTreeGenerator.cs
- XmlSchemaSimpleType.cs
- AutomationTextAttribute.cs
- XPathPatternParser.cs
- HtmlContainerControl.cs
- CompoundFileStreamReference.cs
- ScrollChangedEventArgs.cs
- ToolStripGrip.cs
- ping.cs
- GrammarBuilderPhrase.cs
- ClientOptions.cs
- EventPropertyMap.cs
- UntypedNullExpression.cs
- Setter.cs
- PenContexts.cs
- Token.cs
- KnownTypesProvider.cs
- BookmarkUndoUnit.cs
- WebPartMovingEventArgs.cs
- XmlILAnnotation.cs