我在做一个统计,统计出每天的数据,但是数据库中使用Unix时间戳保存的时间,数据库是MongoDB,高手们,用Linq应该怎么查啊!!!序号 列名 数据类型 默认值 说明
1 account String 用户账号
2 roleid Int32 角色ID
3 role_name String 角色名
4 time Int32 创建角色时间

解决方案 »

  1.   

    问题解决了,我记得以前linq里不支持方法的,连ToString()都不行,不知道为什么现在可以了!!求解string sid = ddlService.SelectedValue;
            DateTime startDate = DateTime.Now.AddDays(-7).Date;
            DateTime endDate = DateTime.Now.Date;        MongoDBHelper mo = new MongoDBHelper(sid);
            MongoDatabase db = mo.GetDatabase(MongoDBHelper.dbName1);
            var clist = mo.GetAll<create_role>(db, "create_role");
            var clis = from p in clist
                       group p by ConvertDate.ConvertIntDateTime(p.time).ToShortDateString() into g
                       select new { g.Key, sum = g.Sum(tt => tt.roleid) };
            foreach (var cli in clis)
            {
                string s = cli.sum.ToString();
            }
      

  2.   

    那时候我用的Mvc3.0,EF实体。Linq语句里真的ToString()都不行
      

  3.   

    没人回答那我换个问题吧,用linq查询的是以下3段代码的执行效率有没有区别,为什么.
    看上去感觉效率没啥分别,前面都一样啊.我是这样理解的……1, var list = mo.GetAll<sign_in_out>();
    2, var list = mo.GetAll<sign_in_out>().Count();
    3, var list = mo.GetAll<sign_in_out>().Skip(1).Take(1);100分啊,总得有人拿走啊
      

  4.   

    那估计是你之前写法不对,
    1, var list = mo.GetAll<sign_in_out>();
    2, var list = mo.GetAll<sign_in_out>().Count();
    3, var list = mo.GetAll<sign_in_out>().Skip(1).Take(1);
    你这获得的匿名集合结果都不一样,效率是不一样的
      

  5.   

    MongoDB 也能被 Linq支持?
    我还以为linq不兼容非关系型数据库。时间戳是一个相对时间,用数字表达。“每天”这个概念就是一个时间戳的区间而已,group by 的时候,时间戳的尾巴若干位是无用的。比如 5758697930000-- 57586979389089 表示 2012-08-29 00:00:00 到 2012-08-29 23:59:59
    那么可见只有 575869793 是有用的,
     时间戳除以 N 去整数 ,可以group by出“每天”这个概念
      

  6.   


    如果已经转成LIST集合了是可以用TOSTRING的。 你现在的集合和数据库已没关系了存在内存中。
      

  7.   

    如果操作的是LINQ中的表是不能用TOSTRING的。 单纯LIST集合是可以的。
      

  8.   

    1 返回类型是IQuerable
    2,3返回类型时IEnumerabl
    效率区别明显,2,3没有使用延迟查询
      

  9.   

    哦,对我之前就是用Linq对表操作的,现在不是