/// <summary> /// Default procedure to translatest a given <see cref="SystemExpression"/> into a <see cref="RemoteExpression"/>. /// </summary> public static RemoteExpression TranslateExpression(SystemExpression expression, IExpressionToRemoteLinqContext?context = null) { expression.AssertNotNull(nameof(expression)); var slinq1 = expression.SimplifyIncorporationOfRemoteQueryables(); var rlinq1 = slinq1.ToRemoteLinqExpression(context); var rlinq2 = rlinq1.ReplaceQueryableByResourceDescriptors(context?.TypeInfoProvider); var rlinq3 = rlinq2.ReplaceGenericQueryArgumentsByNonGenericArguments(); return(rlinq3); }