public void MultipleComparisonsOnSameField() { var qe = new QueryExpression("contact"); qe.ColumnSet = new ColumnSet("fullname", "lastname"); qe.Criteria.AddCondition("modifiedon", ConditionOperator.GreaterThan, "2020-01-01"); qe.Criteria.AddCondition(new ConditionExpression("modifiedon", ConditionOperator.GreaterThan, true, "createdon")); var converted = QueryExpressionCodeGenerator.GetCSharpQueryExpression(qe); var expected = @"// Define Condition Values var query_modifiedon = ""2020-01-01""; var query_modifiedon1 = ""createdon""; // Instantiate QueryExpression query var query = new QueryExpression(""contact""); // Add columns to query.ColumnSet query.ColumnSet.AddColumns(""fullname"", ""lastname""); // Define filter query.Criteria query.Criteria.AddCondition(""modifiedon"", ConditionOperator.GreaterThan, query_modifiedon); query.Criteria.AddCondition(""modifiedon"", ConditionOperator.GreaterThan, true, query_modifiedon1); "; Assert.AreEqual(expected, converted); }
internal void QueryExpressionToFetchXml(string query) { working = true; WorkAsync(new WorkAsyncInfo("Translating QueryExpression to FetchXML...", (eventargs) => { var start = DateTime.Now; string fetchXml = QueryExpressionCodeGenerator.GetFetchXmlFromCSharpQueryExpression(query, Service); var stop = DateTime.Now; var duration = stop - start; LogUse("QueryExpressionToFetchXml", false, null, duration.TotalMilliseconds); SendMessageToStatusBar(this, new StatusBarMessageEventArgs($"Execution time: {duration}")); eventargs.Result = fetchXml; }) { PostWorkCallBack = (completedargs) => { if (completedargs.Error != null) { ShowErrorDialog(completedargs.Error, "Parse QueryExpression"); } else if (completedargs.Result is string) { XmlDocument doc = new XmlDocument(); doc.LoadXml(completedargs.Result.ToString()); dockControlBuilder.Init(doc.OuterXml, null, "parse QueryExpression", true); } working = false; } }); }
private string GetQueryExpressionCode() { var code = string.Empty; try { var QEx = dockControlBuilder.GetQueryExpression(null, false); code = QueryExpressionCodeGenerator.GetCSharpQueryExpression(QEx); } catch (FetchIsAggregateException ex) { code = "This FetchXML is not possible to convert to QueryExpression in the current version of the SDK.\n\n" + ex.Message; } catch (Exception ex) { code = "Failed to generate C# QueryExpression code.\n\n" + ex.Message; } return(code); }