Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq到动态列和动态分组字段上的数据集_Linq - Fatal编程技术网

Linq到动态列和动态分组字段上的数据集

Linq到动态列和动态分组字段上的数据集,linq,Linq,我的函数有四个参数:数据集、由表达式组成的数组、聚合函数、由应用表达式的列名组成的数组和由我必须分组的列组成的数组 我的问题是如何处理expression和GroupBy的动态列或字段,因为它们的数量可能会根据数组值而变化 我已经为静态查询编写了代码,但需要一种通用的方法 这是我的代码: public void ExpressionManipulation(DataSet dsExprEvaluate, string[] strExpressions, string[] colName, str

我的函数有四个参数:数据集、由表达式组成的数组、聚合函数、由应用表达式的列名组成的数组和由我必须分组的列组成的数组

我的问题是如何处理expression和GroupBy的动态列或字段,因为它们的数量可能会根据数组值而变化

我已经为静态查询编写了代码,但需要一种通用的方法

这是我的代码:

public void ExpressionManipulation(DataSet dsExprEvaluate, string[] strExpressions, string[] colName, string[] groupbyFields)
{
        int groupByLength = groupbyFields.Length;

        var groupByQueryEvaluate = from table in dsExprEvaluate.AsEnumerable()
                          group table by new { column1 = table["DataSourceType"], column2 = table["Polarity"] }
                              into groupedTable
                              select new
                              {
                                  x = groupedTable.Key,  // Each Key contains column1 and column2
                                  y = groupedTable.Count(),
                                  //z = groupedTable.Max(column1),
                                  z = groupedTable.Sum(table => Convert.ToInt32(table["Polarity"]))
                              };
}
如上所述,我可以在组中有n个字段,目前我只使用了两个DataSourceType和Polarity,类似的,我可以有n个字段用于表达式、求和、计数等,这些字段将作为数组作为参数

请帮我渡过难关,这让我快发疯了


提前谢谢。

我自己想出来了,我最终的解决方案是:

var objGroupSumCountkey = dt.AsEnumerable()
                            .AsQueryable()
                            .GroupBy("new ( it[\"DataSourceType\"] as GroupByColumnName1,it[\"Polarity\"] as GroupByColumnName2)", "it")
                            .Select("new ( Sum(Convert.ToDouble(it[\"Polarity\"].ToString())) as SumValue,Count() as TotalCount,it.key)");

在上面的查询中,所有参数都将以字符串形式提供,在Group By和select中,

列名、表达式以及执行Group By的字段取决于用户选择……有人能提供解决方案或指导吗????