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
- ResourceReferenceExpressionConverter.cs
- MultiplexingDispatchMessageFormatter.cs
- XmlSerializationGeneratedCode.cs
- RuleSetCollection.cs
- TransactionManager.cs
- DependencyPropertyDescriptor.cs
- StackOverflowException.cs
- ProcessModelSection.cs
- Helpers.cs
- HierarchicalDataBoundControlAdapter.cs
- Deserializer.cs
- VectorCollectionConverter.cs
- StrokeFIndices.cs
- RelatedCurrencyManager.cs
- IPipelineRuntime.cs
- OrthographicCamera.cs
- InvalidOleVariantTypeException.cs
- DBParameter.cs
- Style.cs
- BlurEffect.cs
- MexHttpBindingElement.cs
- FlowDocumentReaderAutomationPeer.cs
- NoResizeSelectionBorderGlyph.cs
- CharacterString.cs
- ValidationError.cs
- BitmapEffectDrawingContextWalker.cs
- SHA256.cs
- PageBuildProvider.cs
- SdlChannelSink.cs
- XmlTextReaderImplHelpers.cs
- _NegotiateClient.cs
- BaseTemplateBuildProvider.cs
- AssemblyNameProxy.cs
- DelimitedListTraceListener.cs
- InkPresenter.cs
- BackoffTimeoutHelper.cs
- Selection.cs
- IdentityHolder.cs
- ApplicationInterop.cs
- Types.cs
- SafeNativeMethodsCLR.cs
- SchemaTableOptionalColumn.cs
- RegexCapture.cs
- EntityDataSourceContextCreatingEventArgs.cs
- _CommandStream.cs
- ToolStripItemImageRenderEventArgs.cs
- SafeUserTokenHandle.cs
- SelectionWordBreaker.cs
- SmtpNetworkElement.cs
- WindowsGraphicsCacheManager.cs
- SoapReflectionImporter.cs
- MultilineStringEditor.cs
- StringUtil.cs
- HttpSessionStateBase.cs
- ScrollBar.cs
- LineServices.cs
- LocalizeDesigner.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- ListItemCollection.cs
- IdnElement.cs
- EncodingStreamWrapper.cs
- StreamInfo.cs
- DetailsViewPagerRow.cs
- Triplet.cs
- SimpleWebHandlerParser.cs
- SqlFacetAttribute.cs
- SoapRpcServiceAttribute.cs
- RegistryPermission.cs
- JsonWriter.cs
- BaseProcessProtocolHandler.cs
- DSACryptoServiceProvider.cs
- documentsequencetextcontainer.cs
- OdbcEnvironmentHandle.cs
- Sentence.cs
- LogEntrySerialization.cs
- BaseInfoTable.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlMembersMapping.cs
- UIPermission.cs
- Mutex.cs
- XmlSchemaSimpleContent.cs
- QuaternionKeyFrameCollection.cs
- JapaneseCalendar.cs
- AffineTransform3D.cs
- InvokeHandlers.cs
- PropertyEmitter.cs
- RecordBuilder.cs
- EmptyEnumerable.cs
- DetailsViewRowCollection.cs
- ChangePassword.cs
- SpecialFolderEnumConverter.cs
- ArrangedElement.cs
- TerminateSequence.cs
- GuidelineCollection.cs
- Calendar.cs
- BroadcastEventHelper.cs
- Panel.cs
- EntityStoreSchemaFilterEntry.cs
- GenericRootAutomationPeer.cs
- RangeBaseAutomationPeer.cs