C# 使用Linq计算列的类型化数据集

C# 使用Linq计算列的类型化数据集,c#,linq,dataset,calculated-columns,C#,Linq,Dataset,Calculated Columns,我有一个强类型的数据表,它是从数据库查询中以强类型的数据集返回的。数据集随后被传递到报表查看器,以显示基于数据某些方面的图表 我向数据集中添加了一个额外的列,并在表中循环,根据数据库返回的一列计算这个新列的值 计算列是一个单字节值,它只是另一列(字节数组)的第一个元素 foreach (ReportData.EventRangeRow row in ReportData.EventRange) { byte[] analysis = (by

我有一个强类型的
数据表
,它是从数据库查询中以强类型的
数据集
返回的。
数据集
随后被传递到
报表查看器
,以显示基于数据某些方面的图表

我向数据集中添加了一个额外的列,并在表中循环,根据数据库返回的一列计算这个新列的值

计算列是一个单字节值,它只是另一列(字节数组)的第一个元素

        foreach (ReportData.EventRangeRow row in ReportData.EventRange)
        {
            byte[] analysis = (byte[]) row[ReportData.EventRange.analysisColumn];

            row[ReportData.EventRange.first_analysisColumn] = analysis[0];
        }
显然,我的解决方案是可行的,但有点笨拙,所以我想知道是否有人可以建议一种方法,要么自动计算列作为类型化数据集的一部分,要么使用linq语句实现同样的效果


谢谢

您可以对报表本身进行许多计算,而不是扩展数据集

假设您有一个数据源“MyDataTable”连接到报表。 然后将一个文本框拖到报告上,右键单击它,然后选择Expression,您将获得一个很好的窗口,可以编写包含大量示例的表达式

一个聚合函数可以是。。。 =第一个(字段!MyColumn.Value,“MyDataTable”)


检查窗口中“Common Functions->Aggregate”类别下的示例

是否仅在reportviewer中需要此计算值?也许您应该在报表中创建一个表达式而不修改数据集?有许多聚合函数,如Sum、Last、Max、Min、Count等。嗨,Martin,我还没有意识到这是可能的-如果你能给我指出正确的答案,我会接受。我假设你正在使用Microsoft ReportViewer进行报告?