Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#linq同名分组_C#_Linq_Datatable - Fatal编程技术网

C#linq同名分组

C#linq同名分组,c#,linq,datatable,C#,Linq,Datatable,我有一个像这样的数据表 Date status recno --------------------------------- 2012 DST;Par 1 ------------------------------------ 2012 DST 2 -------------------------------- 2012 DST 3 ------------------------

我有一个像这样的数据表

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(),
           };

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

< P>如果你想以DST开头的所有状态,并仍然分组变化(DST;PAR,DST;TS),你可以手动完成。p> 类似这样的东西(未经测试,但我想你已经明白了):


我怀疑您的表没有您认为它拥有的信息,或者您正在使用一个更复杂的查询,它使用连接或类似的东西。您期望的结果是什么?这不是复杂的查询,只是对列通道状态进行分组并获得结果,正如我在下面解释的那样。但问题是我必须得到我上面所期望的结果。你得到的结果在我看来是正确的。它按状态分组,您只有两行状态为“DST”。@CuongLe请查看我在上面发布的预期结果,以及我现在得到的实际结果。这表明这里的“除(DST)”有一些无效信息arguments@nag是的,我认为这可能不会立即奏效,因为这只是一个让人理解这个想法的例子。但是,我编辑了代码示例,因此错误应该消失。@nag这是因为使用的类型是匿名类型。如果您创建自己的类持有相同的三个属性,您可以使它们可写。如果我们转换为数据表,会怎么样,因为我已经转换为数据表了。
Result: DST-2 
        DST;par-1 and DST;Ts-1

Expected: DST-4  DST;par-1 and DST;Ts-1
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;
    }
}