无法从“数据视图”列表中获取总和

已加入
2014年6月15日
留言内容
8
编程经验
3-5
大家好,

我尝试从包含总计和并按某些字段分组的数据视图中获取列表。


C#:
DataView view = _objManager.ACCOUNTS.DefaultView;
                        
                        // Set RowStateFilter to display the current rows.
                        view.RowStateFilter = DataViewRowState.CurrentRows;

                        var res = ((DataTable)view.Table)
                          .AsEnumerable()
                          .GroupBy(row => new { ID = row.Field<long?>("ID"), ELEM = row.Field<string>("ELEM") })
                          .Select(sel => new
                          {
                              NAME = sel.First()["NAME"],
                              ID = sel.First()["ID"],
                              IBAN = sel.First()["IBAN"],
                              BIC = sel.First()["BIC"],
                              INFO = sel.First()["INFO"],
                  AMOUNT= sel.Sum(s => sel.Sum()["AMOUNT"])  //doesn't work                           
                          }).ToList();

但是总和不能编译。
你有主意吗?
非常感谢。
埃里克
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
首先,为什么要从 数据表,得到它的 默认视图 然后得到 桌子 从那个?那只会带你回到原来的状态 数据表 你开始。而不是这样做:
DataView view = _objManager.ACCOUNTS.DefaultView;
然后使用这个:
((DataTable)view.Table).AsEnumerable()
只需使用此:
_objManager.ACCOUNTS.AsEnumerable()
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
我认为这是:
数量= sel.Sum(s => sel.Sum()["AMOUNT"]
应该是这样的:
数量= sel.Sum(row => row.Field<decimal>("AMOUNT")
请记住 是一群 数据行 对象,所以你在打电话 总结 数量 该组中各行的字段。你显然可以改变 小数 如果合适,请更改为其他类型。
 
最佳 底部