【发布时间】:2015-12-14 04:17:01
【问题描述】:
对于另一个获取数据透视表的返回数据的示例,我定义了一个LINQ 查询来解决这个问题。那么,现在我的问题是如何计算一列的值?
下面是 C# 代码:
var query = from q in db.DS
where q.datum >= fromDate && q.datum <= toDate
group q by q.quot_rate
into grp
select new
{
Grade = grp.Key,
Total = grp.Select(t => new { t.fon, t.quot_rate }).AsQueryable()
};
var rate = (from q in db.DS
select q.fon).Distinct();
DataTable dt = new DataTable();
dt.Columns.Add("Grade");
foreach (var r in rate)
{
dt.Columns.Add(r.ToString());
}
foreach (var q in query)
{
DataRow dr = dt.NewRow();
dr["Grade"] = q.grade; //round q_grade
foreach (var t in q.Total)
{
dr[t.fon] = t.quot_rate; //count t.quot_rate
}
dt.Rows.Add(dr);
}
return dt;
您可以看到编号必须为ROUND() 和COUNT() 的cmets。
我该如何定义?
编辑:
目前输出如下:
Grade | AB001 | AB002 | AB003 ...
90,045| 90,045| null | null
85,590| null | 85,590| 85,590
85,450| null | 85,450| null
84,901| null | 84,901| null
我想要的结果如下:
Grade | AB001 | AB002 | AB003 ...
90 | 1 | 0 | 0
86 | 0 | 1 | 1
85 | 0 | 2 | 0
【问题讨论】:
-
您按
quot_rate进行分组,但您将属性命名为Grade,这是拼写错误吗?您需要更好地解释您的要求。目前还不清楚你在做什么以及你真正想要什么。 -
你要数什么?组中的项目数,或每个组的“quot_rate”列中不同值的数量?
-
@Andrei 例如
quot_rate= 90,509 ,AB001= 90,509 是当前的视图。我想ROUND()quot_rate的值为 90,509 = 91 和COUNT()AB001= 1 -
@TimSchmelter
Grade称为列标题,quot_rate值添加到列Grade -
@Andrei 我正在更新我的帖子。请参阅上面的输出表。
标签: c# asp.net linq asp.net-web-api