C# LINQ 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小时内,从过期的集合中返回所有样本项的最佳方式是

我有一个具有DateTimeOffset属性的类:

public class Sample 
{
    public DateTimeOffset expires { get; set; }
}
并最终收集了它们:

IEnumerable<Sample> collection;
IEnumerable集合;
2个问题:

  • 创建一个方法以返回过期时间大于现在且仍在今天(即午夜之前)的集合中的所有样本项的最佳方法是什么

  • 在接下来的24小时内,从过期的集合中返回所有样本项的最佳方式是什么

  • //比现在更伟大,还是今天
    其中(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();