0

データ テーブルで動的な linq を実行する方法を作成しようとしています。貼り付けたコードは、作業中の完全なコードではなくテスト コードですが、やろうとしていることを理解するには十分だと思います。 .

基本的に、r => r.Field("field") を置き換えるために使用できる式を含むメソッドに 2 番目のパラメーターを追加したいと考えています。

public string GetStringValueFromData(DataTable data)
{
    switch (this.MethodType)
    {
        case (LabelMethodType.Count):
            return data.AsEnumerable().Select(r => r.Field<string>("sometextfield")).Count().ToString();
        case (LabelMethodType.Sum):
            return data.AsEnumerable().Sum(r => r.Field<decimal>("somenumberfield")).ToString();
        case (LabelMethodType.Average):
            return data.AsEnumerable().Average(r => r.Field<decimal>("anotherfield")).ToString();
    }

    return string.Empty;
}

基本的に、メソッドは次のようになります。もちろん、私はこれを試しましたが、コンパイルさえしません。

public string GetStringValueFromData(DataTable data, Expression<Func<DataRow, object>> expression)
{
    switch (this.MethodType)
    {
        case (LabelMethodType.Count):
            return data.AsEnumerable().Select(expression).Count().ToString();
        case (LabelMethodType.Sum):
            return data.AsEnumerable().Sum(expression).ToString();
        case (LabelMethodType.Average):
            return data.AsEnumerable().Average(expression).ToString();
    }

    return string.Empty;
}

r => r.Field("sometextfield") または r => r.Field("somenumberfield") のようなものを受け入れるか、または代替アプローチ。

ありがとう

CD

4

1 に答える 1