Code:
/ 4.0 / 4.0 / 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. #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(IEnumerable expressions) { 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
- ApplicationId.cs
- TdsParser.cs
- X509ChainElement.cs
- QilName.cs
- MenuCommands.cs
- ItemCheckedEvent.cs
- MultiAsyncResult.cs
- Button.cs
- LockedActivityGlyph.cs
- TypeUtils.cs
- FixedSOMFixedBlock.cs
- Command.cs
- CustomErrorCollection.cs
- ConfigViewGenerator.cs
- OrderedDictionaryStateHelper.cs
- ObjectMemberMapping.cs
- SystemTcpStatistics.cs
- WebPartMinimizeVerb.cs
- Delegate.cs
- FormViewPageEventArgs.cs
- DataTableMapping.cs
- ObjectCache.cs
- StatusBarAutomationPeer.cs
- EntityConnection.cs
- FrameAutomationPeer.cs
- DiscoveryServiceExtension.cs
- DataServiceHostFactory.cs
- UpDownEvent.cs
- DataKeyCollection.cs
- _LocalDataStore.cs
- NullableLongSumAggregationOperator.cs
- FilterEventArgs.cs
- SmiEventSink.cs
- DBSqlParserColumn.cs
- AssemblyAttributesGoHere.cs
- ControlPropertyNameConverter.cs
- SqlBooleanizer.cs
- DateTimeFormatInfoScanner.cs
- PathGeometry.cs
- IndicShape.cs
- MetadataPropertyAttribute.cs
- LogSwitch.cs
- ObjectListSelectEventArgs.cs
- GridViewRowCollection.cs
- FormViewUpdateEventArgs.cs
- SerializationBinder.cs
- XmlSchemaProviderAttribute.cs
- FilteredAttributeCollection.cs
- StreamAsIStream.cs
- Vector3DCollectionConverter.cs
- FocusManager.cs
- WebPartDisplayModeCollection.cs
- CacheHelper.cs
- DescendantBaseQuery.cs
- SafeProcessHandle.cs
- KnownBoxes.cs
- DocumentGrid.cs
- DependencySource.cs
- ResourceManager.cs
- ValueTypeFieldReference.cs
- RuntimeCompatibilityAttribute.cs
- DropShadowEffect.cs
- AssertSection.cs
- CachedTypeface.cs
- CookieProtection.cs
- WebPartMovingEventArgs.cs
- ProtocolProfile.cs
- ButtonBaseAutomationPeer.cs
- CTreeGenerator.cs
- DataControlCommands.cs
- HtmlImage.cs
- TextElementCollection.cs
- SchemaComplexType.cs
- InstancePersistenceEvent.cs
- BasicKeyConstraint.cs
- InvalidCastException.cs
- PriorityQueue.cs
- WorkflowFileItem.cs
- EllipticalNodeOperations.cs
- XmlEnumAttribute.cs
- Lock.cs
- BamlLocalizationDictionary.cs
- bidPrivateBase.cs
- basemetadatamappingvisitor.cs
- DataGridViewRowsRemovedEventArgs.cs
- EdmToObjectNamespaceMap.cs
- TextStore.cs
- ServiceOperationParameter.cs
- ReadOnlyDictionary.cs
- Events.cs
- XamlSerializerUtil.cs
- IndexingContentUnit.cs
- ValidatedControlConverter.cs
- CodeConstructor.cs
- CertificateManager.cs
- ToolBar.cs
- TemplateBaseAction.cs
- HtmlElementEventArgs.cs
- StorageModelBuildProvider.cs
- FixedPage.cs