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
- DataServiceEntityAttribute.cs
- ObservableCollection.cs
- StretchValidation.cs
- XhtmlConformanceSection.cs
- Debugger.cs
- CancellationHandler.cs
- Facet.cs
- LoginDesignerUtil.cs
- ResourcesBuildProvider.cs
- DeflateStreamAsyncResult.cs
- InitializationEventAttribute.cs
- UserNameServiceElement.cs
- PropertyDescriptorComparer.cs
- SQLBinaryStorage.cs
- ColorContextHelper.cs
- RayHitTestParameters.cs
- RootBrowserWindowProxy.cs
- MetadataSerializer.cs
- followingquery.cs
- ExceptionUtil.cs
- ShellProvider.cs
- dbenumerator.cs
- ContentType.cs
- SplineKeyFrames.cs
- CompoundFileIOPermission.cs
- LinqDataView.cs
- RtType.cs
- DropTarget.cs
- WebPartDescription.cs
- HttpResponseHeader.cs
- Encoding.cs
- WindowsTitleBar.cs
- PersianCalendar.cs
- VectorConverter.cs
- AnnotationResourceChangedEventArgs.cs
- WinFormsSecurity.cs
- Addressing.cs
- WebScriptServiceHostFactory.cs
- ColumnReorderedEventArgs.cs
- WebPartUserCapability.cs
- AdornerDecorator.cs
- WebPartExportVerb.cs
- DefaultMemberAttribute.cs
- DiffuseMaterial.cs
- WSHttpSecurityElement.cs
- TreeWalkHelper.cs
- StringFreezingAttribute.cs
- IdentifierCollection.cs
- SimpleBitVector32.cs
- Decorator.cs
- InstanceDataCollection.cs
- LinkUtilities.cs
- DigitalSignatureProvider.cs
- milexports.cs
- TextCompositionManager.cs
- EntitySqlQueryCacheEntry.cs
- NumericExpr.cs
- SmiXetterAccessMap.cs
- ParseElementCollection.cs
- TableDetailsCollection.cs
- Rotation3DAnimationBase.cs
- PropertyGridDesigner.cs
- ProfilePropertySettings.cs
- HandlerMappingMemo.cs
- NetworkInterface.cs
- ColorAnimationBase.cs
- TextEffect.cs
- XmlDataSourceNodeDescriptor.cs
- FontEditor.cs
- StyleHelper.cs
- InputLanguageSource.cs
- AnnotationComponentManager.cs
- DataViewManagerListItemTypeDescriptor.cs
- WmlPhoneCallAdapter.cs
- SqlUDTStorage.cs
- Point3D.cs
- TextFormatterImp.cs
- XmlILModule.cs
- DetailsViewDeletedEventArgs.cs
- HandlerBase.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ListViewSortEventArgs.cs
- SystemResourceHost.cs
- DbBuffer.cs
- MemberDescriptor.cs
- FormClosedEvent.cs
- Int32CAMarshaler.cs
- ClientFormsAuthenticationCredentials.cs
- DataControlImageButton.cs
- NavigatorInput.cs
- CryptoStream.cs
- BitStream.cs
- FixedTextBuilder.cs
- ImmutableDispatchRuntime.cs
- StoragePropertyMapping.cs
- OleDbStruct.cs
- JobCollate.cs
- sapiproxy.cs
- Boolean.cs
- ColumnResizeUndoUnit.cs