c# - 列出日期,添加时间以列出 linq

标签 c# linq list datetime entity

我有一个带日期的列表,要在网格中显示它,我想将一小时添加到范围 2:

private void grid_loaded(object sender, RoutedEventArgs e)
{
    var data = new List<EntityViewModel> 
    {
        new EntityViewModel { aDay = new DateTime(1980, 1, 1, 12, 0, 12) },
        new EntityViewModel { aDay = new DateTime(1983, 1, 1, 12, 23, 12) },
        new EntityViewModel { aDay = new DateTime(1985, 6, 14, 12, 0, 12) },
        new EntityViewModel { aDay = new DateTime(1990, 7, 3, 12, 23, 12) },
        new EntityViewModel { aDay = new DateTime(1995, 8, 1, 4,  23, 12) },
        new EntityViewModel { aDay = new DateTime(1996, 1, 1, 12, 0, 12) },
        new EntityViewModel { aDay = new DateTime(2000, 1, 1, 12, 0, 12) },
        new EntityViewModel { aDay = DateTime.Now }
    };

    var range = data.Where(i => i.aDay.Year >= 1983 && i.aDay.Year <= 1996).ToList();
    var range2 = range.Where(i => i.aDay.Date.IsDaylightSavingTime() == true).ToList();
}

我试过这个:

var range3 = range.Where(i => i.aDay.Date.IsDaylightSavingTime() == true).ToList();
range3.ForEach(i => i.aDay.AddHours(1));

这个:

foreach (var item in range2.Where(x => x.aDay != null))
{
    item.aDay.AddHours(1);
}

还有这个:

var range5 = range2.Where(i => i.aDay != null).Select(i => { i.aDay.AddHours(1); return i; }).ToList();

但它什么都不做,始终是同一小时。

最佳答案

AddHours不会更改初始日期,但会返回一个新日期。
您需要选择这些日期:

var range5 = range2.Where(i => i.aDay != null).Select(i => i.aDay.AddHours(1));

获取更改后的日期或

range3.ForEach(i => i.aDay = i.aDay.AddHours(1));

更改列表中项目的日期。

关于c# - 列出日期,添加时间以列出 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24382032/

相关文章:

c# - 修改基础列表时的 PLINQ O(n^2)

python - Python 3 中 list() 和 [ ] 的区别

c# - 如何在异步套接字中接收完整的屏幕截图?

c# - Linq to XML 通过查询子元素获取父元素属性值

c# - 如何在 ASP.NET Core 身份验证中将 OAuth 回调配置到不同的域

c# - Linq/Enumerable Any Vs 包含

python - 在Python中修改3D数组

python - 如何使用 list.insert 将 Python 中的元素添加到列表末尾?

c# - 如何获取表和主键,如果表没有主键则显示null?

c# - 无效操作异常 : Cannot use table 'xxxx1' for entity type 'xxxx2' since it is being used for entity type 'xxxx1'