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
- RoutedEventArgs.cs
- BasicKeyConstraint.cs
- IconHelper.cs
- TextTreeDeleteContentUndoUnit.cs
- PageThemeBuildProvider.cs
- XmlCountingReader.cs
- SignatureToken.cs
- OptimizedTemplateContentHelper.cs
- NotifyCollectionChangedEventArgs.cs
- DataObjectSettingDataEventArgs.cs
- ScriptingRoleServiceSection.cs
- SQLInt64Storage.cs
- DataServiceConfiguration.cs
- RoutedEvent.cs
- GlobalizationAssembly.cs
- SelectionPattern.cs
- SystemMulticastIPAddressInformation.cs
- PasswordBoxAutomationPeer.cs
- ValueSerializerAttribute.cs
- TraceUtility.cs
- JsonObjectDataContract.cs
- ObjectHandle.cs
- SoapUnknownHeader.cs
- MailSettingsSection.cs
- StringFormat.cs
- CqlWriter.cs
- AudioFileOut.cs
- HandleCollector.cs
- DebugHandleTracker.cs
- DocumentSequence.cs
- WhitespaceRule.cs
- XmlDownloadManager.cs
- ThemeableAttribute.cs
- ImplicitInputBrush.cs
- DataGridHeaderBorder.cs
- TextRenderer.cs
- DbMetaDataFactory.cs
- Rect.cs
- SplineKeyFrames.cs
- FormsAuthenticationUserCollection.cs
- BufferedGraphicsManager.cs
- regiisutil.cs
- MenuBase.cs
- TemplateControlParser.cs
- DesignerSelectionListAdapter.cs
- QilGeneratorEnv.cs
- ReachDocumentSequenceSerializer.cs
- StateItem.cs
- parserscommon.cs
- Rule.cs
- BridgeDataReader.cs
- Int64KeyFrameCollection.cs
- AstTree.cs
- NavigationPropertySingletonExpression.cs
- SmiContext.cs
- WebEvents.cs
- ObjectDataSourceFilteringEventArgs.cs
- Executor.cs
- XmlAttribute.cs
- MailMessageEventArgs.cs
- AnnotationHighlightLayer.cs
- BatchServiceHost.cs
- Endpoint.cs
- TextWriterTraceListener.cs
- AppManager.cs
- CodeCompileUnit.cs
- StorageBasedPackageProperties.cs
- TailCallAnalyzer.cs
- ComponentEditorPage.cs
- HttpWebResponse.cs
- OpenFileDialog.cs
- GPRECTF.cs
- PeerMaintainer.cs
- HWStack.cs
- KeySplineConverter.cs
- Point3DCollectionConverter.cs
- FrameworkReadOnlyPropertyMetadata.cs
- CodeAttributeDeclarationCollection.cs
- SecurityTokenResolver.cs
- CreateDataSourceDialog.cs
- OleDbFactory.cs
- Dump.cs
- XPathNodeHelper.cs
- WebEventTraceProvider.cs
- XmlElementCollection.cs
- Model3DGroup.cs
- RecordConverter.cs
- HttpConfigurationContext.cs
- SubqueryRules.cs
- Variant.cs
- FilterQuery.cs
- DataService.cs
- ScrollViewerAutomationPeer.cs
- PersistStreamTypeWrapper.cs
- XamlPointCollectionSerializer.cs
- ObjectQuery_EntitySqlExtensions.cs
- GeneralTransform2DTo3DTo2D.cs
- ButtonAutomationPeer.cs
- DetailsViewDeletedEventArgs.cs
- cookie.cs