Return 所有可能的索引参数

Return all possible index parameters

我正在使用 C# 和 Crystal 报告库。我有一个方法获取指定参数的 SQL 查询,如下所示;

pi.GetIndexParameters()))[0].CommandText;

我的问题是,一旦一份报告有多个查询 - 我如何才能找到该报告所具有的索引(查询)数量以及 return 每个 SQL 查询呢?

//Returns SQL query based on index parameter
public string readSqlQuery(ReportDocument rd)
     {
         if (!rd.IsLoaded)
             throw new ArgumentException("Please ensure that the reportDocument has been loaded");
         PropertyInfo pi = rd.Database.Tables.GetType().GetProperty("RasTables", BindingFlags.NonPublic | BindingFlags.Instance);

         return ((dynamic)pi.GetValue(rd.Database.Tables, pi.GetIndexParameters()))[0].CommandText;
     }

如果您需要任何进一步的信息,请告诉我。

我会这样做:

  1. 获取 returned IndexParameters 并将其保存在列表中 // UNNECESSARY, you can skip this
  2. 遍历列表并获取每个 value/CommandText,存储在新列表中

  3. 要么将列表连接成一个字符串,然后 return 要么

  4. return 字符串列表

如果您要选择 3,我想您会想要所有查询的结果? 然后确保你对你的查询进行 UNION ALL... 示例:

SELECT t.id, t.name, t.date FROM table t WHERE <some condition> UNION ALL SELECT t.id, t.name, t.date FROM table t WHERE <some other condition> UNION ALL SELECT t.id, t.name, t.date FROM table t WHERE <some third condition>

所以您基本上是将查询与 "UNION ALL" 连接起来并得到一个结果。