【问题标题】:Group By Contains [Date]分组依据包含 [日期]
【发布时间】:2016-02-12 20:09:19
【问题描述】:

我有一个列表,我在其中按日期值进行分组,我想在包含 DateNow 的分组项上创建 if 声明,但我找不到它可以工作..

这是我的 Group By 示例:

@foreach (var item in Model.Select(v => new //here you count your total
    {
        Fecha = v.Fecha,
        Total = v.Total * v.Cantidad
    })
    .GroupBy(l => l.Fecha) //and then grouping
    .Select(z => new
    {
        Dia = z.Key,
        Total = z.Sum(l => l.Total)
    }))
{
    if (item.ToString().Contains(date))
    {  
        <input value="@item" />
    }
}

它给了我这个输出:

{ Dia = 1/1/2016 12:00:00 AM, Total = 40293.0000 }
{ Dia = 1/3/2016 12:00:00 AM, Total = 96774.0000 }
{ Dia = 2/12/2016 12:00:00 AM, Total = 34374.0000 }

我想要一个 if 语句,在上面的示例中只给我今天的分组我希望 if 只给我这个输出:

{ Dia = 2/12/2016 12:00:00 AM, Total = 34374.0000 }

但我的“if (item.ToString().Contains(date))”不起作用。我做错了什么?

【问题讨论】:

    标签: c# linq datetime group-by


    【解决方案1】:

    您可以添加Where() 部分以仅获取今天的记录,例如:

    .GroupBy(l => l.Fecha)
    .Where(x=> x.Key.Date == DateTime.Now.Date)
    .......................
    .......................
    

    或:

    if (item.Dia.Date == DateTime.Today)
    {
       <input value="@item" />
    } 
    

    【讨论】:

    • 可以使用DateTime.Today 代替DateTime.Now.Date
    • 感谢@juharr 告知,不知道该物业
    • 但我的项目是一个组,它不会完全 == 到 DateTime。今天我不应该使用包含或类似的东西吗?
    • 你有一个属性是 DateTime,你可以用相等检查来检查
    • 您是否正在尝试检查 groupby 结果是否与今天 Date 有任何记录?
    【解决方案2】:

    你可以像这样使用 where 语句:

    Where(x=> x.Key.Date == DateTime.Now.Date)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多