0

我有一个像这样的数据表

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

请向我解释我做错了什么以及如何获得预期的结果。

4

1 回答 1

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;
    }
}
于 2012-10-15T06:56:11.000 回答