急急急!在线等!!!求一个ling 分组

小刘哈哈 2014-05-26 09:53:53
如何在:
var countAll = dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString()).Sum(d => d.Field<decimal>("AMOUNT"));

这条linq中添加一个按照时间分组, 时间用字段time来代替
...全文
4002 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小刘哈哈 2014-05-26
  • 打赏
  • 举报
回复
引用 2 楼 xdashewan 的回复:

            var query = from t in dt.AsEnumerable()
                        where 条件
                        group t by new { t1 = t.Field<DateTime>("time") } into m
                        select new
                        {
                            name = m.Key.t1,
                            score = m.Sum(n => n.Field<decimal>("AMOUNT"))
                        };
自己改改吧
用这个写成: var countAlls = from t in dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString())
group t by new { t1 = t.Field<DateTime>("PAYMENTTIME") } into m select new { name = m.Key.t1, score = m.Sum(n => n.Field<decimal>("AMOUNT")) };
查找出来的结果为null
小刘哈哈 2014-05-26
  • 打赏
  • 举报
回复
var countAlls = dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString()).GroupBy(d => d.Field<DateTime>("PAYMENTTIME").ToString("yyyy-MM")).Select(g => g.Sum(d => d.Field<decimal>("AMOUNT")));
这样写报错误:无法将类型为“WhereSelectEnumerableIterator`2[System.Linq.IGrouping`2[System.String,System.Data.DataRow],System.Decimal]”的对象强制转换为类型“System.IConvertible”。
小刘哈哈 2014-05-26
  • 打赏
  • 举报
回复
引用 3 楼 q107770540 的回复:
dtCost.AsEnumerable() 后,数据已经加载到内存中了,和db已经没有关系了吧 var countAll = dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString()).GroupBy(d=>d.Field<DateTime>("time")).Select(g =>g.Sum(d=>d.Field<decimal>("AMOUNT")) );
嗯嗯 dtCost是个从数据库读出来的datatable 但是我按照你这样的写法 发现数据读不出来 麻烦老大在看看好吗?
q107770540 2014-05-26
  • 打赏
  • 举报
回复
dtCost.AsEnumerable() 后,数据已经加载到内存中了,和db已经没有关系了吧 var countAll = dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString()).GroupBy(d=>d.Field<DateTime>("time")).Select(g =>g.Sum(d=>d.Field<decimal>("AMOUNT")) );
xdashewan 2014-05-26
  • 打赏
  • 举报
回复

            var query = from t in dt.AsEnumerable()
                        where 条件
                        group t by new { t1 = t.Field<DateTime>("time") } into m
                        select new
                        {
                            name = m.Key.t1,
                            score = m.Sum(n => n.Field<decimal>("AMOUNT"))
                        };
自己改改吧
小刘哈哈 2014-05-26
  • 打赏
  • 举报
回复
我这样写 var countAll = dtCost.AsEnumerable().Where(d => d.Field<string>("REIM_TARGET_ID") == dtAll.Rows[i]["REIM_TARGET_ID"].ToString()).GroupBy(d=>d.Field<DateTime>("time")).Sum(d => d.Field<decimal>("AMOUNT")); 不行 oracle中time的字段是Date 急求!!!
  • 打赏
  • 举报
回复

Select(g => g.Sum(d => d.Field<decimal>("AMOUNT")));
改成:
Sum(d => d.Field<decimal>("AMOUNT"));
试试

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧