LINQ,6点到明天6点,这样分组应该如何写

朗烽 2017-05-03 04:17:55
通常时间分组是按照0点为分界线,如何按照6点为分界线来分组?
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
游离失所 2017-05-03
  • 打赏
  • 举报
回复
按早上6点来分组。。未达到6点算昨天的一组。。 如 2017-05-03 04:00:00 未达到6点,算5.2日的那一组。。
游离失所 2017-05-03
  • 打赏
  • 举报
回复

public class User
{
public int id;
public string name;
public DateTime cardTime;
}

static List<User> list = new List<User>()
{
new User(){id=2,name="Jay",cardTime=DateTime.Parse("2017-05-02 03:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-02 04:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-03 04:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-03 12:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-04 23:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-04 07:00:00")},
new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-05 04:00:00")},
};
static void Main()
{
var groups = list.GroupBy(x => x.cardTime.Hour > 6 ? x.cardTime.ToString("yyyy-MM-dd") : x.cardTime.AddDays(-1).ToString("yyyy-MM-dd"));
foreach (var group in groups)
{
Console.WriteLine(string.Format("下列时间属于:{0}组", group.Key));
foreach (var item in group)
{
Console.WriteLine(item.cardTime);
}
Console.WriteLine();
}
}


结果
正怒月神 2017-05-03
  • 打赏
  • 举报
回复
按照时间段分组的话,参考http://183615215-qq-com.iteye.com/blog/1829324 如果是linq的话,就不知道了
正怒月神 2017-05-03
  • 打赏
  • 举报
回复
引用 4 楼 qq_30897517 的回复:
大哥,这个是where判断,那分组呢?是吧分组的条件按你where里面的写的就可以吗
额。题目看错了。还要分组啊。
朗烽 2017-05-03
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
[quote=引用 2 楼 qq_30897517 的回复:] 用LINQ如何写?
static List<User> list = new List<User>()
        {
            new User(){id=2,name="Jay",cardTime=DateTime.Parse("2017-05-02 03:00:00")},
            new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-02 04:00:00")},
            new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-03 04:00:00")},
            
        };


        static void Main(string[] args)
        {
            DateTime start=new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day-1,6,0,0);
            DateTime end=new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,6,0,0);
            var q = list.Where(x => x.cardTime >= start && x.cardTime < end).ToList();

            Console.ReadLine();
        }
[/quote] 大哥,这个是where判断,那分组呢?是吧分组的条件按你where里面的写的就可以吗
正怒月神 2017-05-03
  • 打赏
  • 举报
回复
引用 2 楼 qq_30897517 的回复:
用LINQ如何写?
static List<User> list = new List<User>()
        {
            new User(){id=2,name="Jay",cardTime=DateTime.Parse("2017-05-02 03:00:00")},
            new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-02 04:00:00")},
            new User(){id=1,name="Jay",cardTime=DateTime.Parse("2017-05-03 04:00:00")},
            
        };


        static void Main(string[] args)
        {
            DateTime start=new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day-1,6,0,0);
            DateTime end=new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,6,0,0);
            var q = list.Where(x => x.cardTime >= start && x.cardTime < end).ToList();

            Console.ReadLine();
        }
朗烽 2017-05-03
  • 打赏
  • 举报
回复
引用 1 楼 hanjun0612 的回复:
这个意思?昨天6点到今天6点?
select * from [dbo].[PO_Shipment]
where S_CreateDate 
between  (CONVERT(varchar(100), DATEAdd(dd,-1,GETDATE()), 23)+' 06:00:00')
and (CONVERT(varchar(100), GETDATE(), 23)+' 06:00:00') 

--2017-05-02 06:00:00
select (CONVERT(varchar(100), DATEAdd(dd,-1,GETDATE()), 23)+' 06:00:00')
--2017-05-03 06:00:00
select (CONVERT(varchar(100), GETDATE(), 23)+' 06:00:00') 
用LINQ如何写?
正怒月神 2017-05-03
  • 打赏
  • 举报
回复
这个意思?昨天6点到今天6点?

select * from [dbo].[PO_Shipment]
where S_CreateDate
between (CONVERT(varchar(100), DATEAdd(dd,-1,GETDATE()), 23)+' 06:00:00')
and (CONVERT(varchar(100), GETDATE(), 23)+' 06:00:00')

--2017-05-02 06:00:00
select (CONVERT(varchar(100), DATEAdd(dd,-1,GETDATE()), 23)+' 06:00:00')
--2017-05-03 06:00:00
select (CONVERT(varchar(100), GETDATE(), 23)+' 06:00:00')

8,497

社区成员

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

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