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 に答える