C# LINQ DateTimeOffset与今天的比较
我有一个具有DateTimeOffset属性的类:C# LINQ DateTimeOffset与今天的比较,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一个具有DateTimeOffset属性的类: public class Sample { public DateTimeOffset expires { get; set; } } 并最终收集了它们: IEnumerable<Sample> collection; IEnumerable集合; 2个问题: 创建一个方法以返回过期时间大于现在且仍在今天(即午夜之前)的集合中的所有样本项的最佳方法是什么 在接下来的24小时内,从过期的集合中返回所有样本项的最佳方式是
public class Sample
{
public DateTimeOffset expires { get; set; }
}
并最终收集了它们:
IEnumerable<Sample> collection;
IEnumerable集合;
2个问题:
//比现在更伟大,还是今天
其中(d=>d.expires.DateTime>DateTime.Now&&d.expires.Date==DateTime.Today);
//在接下来的24小时内到期
其中(d=>d.expires.DateTime>DateTime.Now&&d.expires.DateTime
变量列表1=
收藏,在哪里
(c=>c.expires.DateTime>DateTime.Now&&
c、 expires.DateTimec.expires.DateTime>=DateTime.Now&&
c、 expires.DateTime最好是“缓存”计算出的性能值,否则将在每个循环中计算(循环内部的位置也是如此):
DateTime明天=DateTime.Today.AddDays(1);
DateTime now=DateTime.now;
DateTime next24hrs=now.AddHours(24);
IEnumerable next24小时样本=集合。其中LINEQuest.ExestReal:ExtReals> =现在& & Simul.ExpIrReSI不认为这是非常明智的。因为LINQ推迟执行,计算DATE时间值并将它们传递给LINQ意味着理论上,在执行执行时,值可能已经改变。午夜前和允许新的一天开始之间的一些操作,一切都是错误的。更不用说这是否意味着要在编译的linq查询中进行。理论上可能是正确的,但实际上延迟执行也可能会在午夜运行并把一切搞砸。这只是一个好的实践,不是一个规则。感谢您的回答,但当d.expires是问题中提到的日期时间偏移量时,这不起作用。好的,再试一次,我已将查询调整为偏移量类型。很抱歉,我错过了。谢谢回答,但当c.expires是问题中提到的日期时间偏移量时,这不起作用
// greater than now, still today
collection.Where(d => d.expires.DateTime > DateTime.Now && d.expires.Date == DateTime.Today);
// expires in the next 24 hours
collection.Where(d => d.expires.DateTime > DateTime.Now && d.expires.DateTime < DateTime.Now.AddHours(24));
var list1 =
collection.Where
(c => c.expires.DateTime > DateTime.Now &&
c.expires.DateTime < DateTime.Today.AddDays(1));
var list2 =
collection.Where
(c => c.expires.DateTime >= DateTime.Now &&
c.expires.DateTime <= DateTime.Now.AddHours(24));
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime now = DateTime.Now;
DateTime next24hrs = now.AddHours(24);
IEnumerable<Sample> next24HoursSamples = collection.Where(sample=>sample.expires>now && sample.expires<next24hrs).ToList();
IEnumerable<Sample> sameDaySamples = next24HoursSamples.Where(sample=>sample.expires>=now && sample.expires<tomorrow).ToList();