繁体   English   中英

如何通过使用通用类型来计算c#中的总计?

[英]How to calulate the grand total in c# by using a genertic type?

我正在尝试编写一个应用程序,该应用程序允许我对数据库生成动态查询。 到目前为止,我能够生成/执行查询并将数据填充到表中而不会出现问题。

现在,我的一些查询使用SQL聚合函数,即COUNT(*), SUM(), AVG(), MAX...

使用聚合列时,我需要能够对总计的聚合列求和。 由于这是一个动态查询,因此数据类型可能会有所不同。 可以是整数,双精度或大整数

执行查询后,我将数据填充到字典列表中。 我的清单是这样定义的

public List<Dictionary<string, object>> Data { get; set; }

要将数据填充到没有总计的HTML表中,请在我的视图中执行以下操作

@for (int y = 0; y < Model.Data.Count; y++)
{
    <tr>
        @foreach (var attribute in Model.Data[y])
        {
            <td>@attribute.Value</td>            
        }
    </tr>
}

现在,我需要能够为某些聚合列添加总计。 但是问题是我不知道数据类型是字符串形式的。

这是我试图做的

@{

    var aggregateColumns = Model.Columns.Where(x => x.AggregateFunction != ReportsEngine.Support.ReportsGenerator.Report.Contracts.SqlAggregateFunctions.None).ToList();

    var grandTotals = new Dictionary<string, object>();
}

    @for (int y = 0; y < Model.Data.Count; y++)
    {
        <tr>
            @foreach (var attribute in Model.Data[y])
            {
                <td>@attribute.Value</td>

                var column = aggregateColumns.Where(x => x.SqlAlias == attribute.Key).FirstOrDefault();

                if(column != null)
                {
                    //At this point we know this is an aggregate column. Sum the data
                    //grandTotals[attribute.Key] += attribute.Value;
                }

            }
        </tr>
    }

如您所见,我尝试使用字典来增加每次。 grandTotals[attribute.Key] += attribute.Value;

有没有办法在不知道实际数据类型的情况下添加数据?

在这种情况下,如何汇总列?

我需要能够手动对记录进行求和,因为以后需要基于数据进行总计。

尽管我对这种方法不太满意,但这似乎很好用:

var result = AddTypelessNumbers((int)15 , (decimal)15.12));


static dynamic AddTypelessNumbers(dynamic a, dynamic b)
{
    return a + b;    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM