我有一个像
这样的数据表Date status recno
---------------------------------
2012 DST;Par 1
------------------------------------
2012 DST 2
--------------------------------
2012 DST 3
--------------------------------------------
2012 DST;Ts 4
-----------------------------------
目前我写了一个这样的查询:
var data = from b in table.AsEnumerable()
where b.DateInterval>=fromDate && b.DateInterval<=toDate
group b by b.Channel1_status into g
select new
{
AccountNo=accountNumber,
Status = statusLabels[g.Key].ToString(),
StatusCount = g.Count(),
};
但是,它会让我得到这些结果:
Result: DST-2
DST;par-1 and DST;Ts-1
Expected: DST-4 DST;par-1 and DST;Ts-1
请向我解释我的错误以及如何获得预期结果。
答案 0 :(得分:1)
如果您想要以DST开头的状态计算所有状态并仍然对变体进行分组(DST; par,DST; ts),您可以手动执行此操作。
这样的事情(未经测试,但我认为你明白了):
var dst = data.FirstOrDefault(x => x.Status == "DST");
if (dst != null) {
foreach (var group in data.Where(x => x != dst && x.Status.StartsWith("DST")) {
dst.StatusCount += group.StatusCount;
}
}