代码之家  ›  专栏  ›  技术社区  ›  zsharp

lambda表达式中的时间跨度

  •  3
  • zsharp  · 技术社区  · 15 年前

    var items= Items.Where(i=>DateTime.Now.Subtract(i.Date)...)
    
    4 回复  |  直到 9 年前
        1
  •  8
  •   Daniel A. White    15 年前

    你挑吧

    var items= Items.Where(i => DateTime.Now.Subtract(i.Date).TotalMinutes < 1)
    

    var items= Items.Where(i => DateTime.Now.Subtract(i.Date).TotalSeconds <= 60)
    
        2
  •  6
  •   Reed Copsey    15 年前

    如果每个项目都有日期属性,则可以执行以下操作:

    DateTime startDate = DateTime.Now - new TimeSpan(0,1,0);
    var items = Items.Where( i => i.Date >= startDate );
    

    您可以将数学直接放入Where语句中,但它会在每个项上重新计算,因此我更喜欢将开始时间保留在语句之外。

        3
  •  5
  •   Fredrik Mörk    15 年前

    怎么样:

    DateTime cutoffPoint = DateTime.Now.AddMinutes(-1);
    var items = Items.Where(i => (i.Date >= cutoffPoint));
    
        4
  •  2
  •   andyp    15 年前
    var items = Items.Where(i => DateTime.Now.Subtract(i.Date).TotalSeconds <= 60);
    

    根据列表中包含的项目的数量,您可能希望保存DateTime。现在将其转换为一个变量,因此在所有比较中都是相同的。。