1

関数には、データセット、式で構成される配列 (集計関数)、式を適用する列名で構成される配列、およびグループ化する必要がある列で構成される配列の 4 つのパラメーターがあります。

私の問題は、式とグループ化の動的な列またはフィールドをどのように処理できるかということです。これは、数値が異なる可能性があるためです (配列値によって異なります)。

静的クエリのコードを作成しましたが、一般的な方法が必要です...

これは私のコードです:

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 個のフィールドを含めることができます。今のところ、2 つ (DataSourceType と Polarity) のみを取得しています。同様に、式、合計、カウントなどの n 個のフィールドを配列として持つことができます。パラメータ。

これを手伝ってください、それは私を夢中にさせています。

前もって感謝します。

4

1 に答える 1

0

私はそれを自分で考え出しました、そして私が最終的に得た解決策は次のとおりです:

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 で選択されます。

于 2013-04-23T12:51:31.497 に答える