【问题标题】:Get minimum and maximum time value from list of object property using Linq使用 Linq 从对象属性列表中获取最小和最大时间值
【发布时间】:2011-02-04 06:52:55
【问题描述】:

我有带属性的设置对象

class Settings
{
    DateTime StartTime;
    DateTime EndTime;
}

我已经创建了这个设置对象的列表。

如何使用 LINQ 从对象集合中获取 MaxTime 和 MinTime?

【问题讨论】:

    标签: c# linq collections


    【解决方案1】:
    var minStartTime = settings.Min(setting => setting.StartTime);    // returns 8am
    var maxEndTime = settings.Max(setting => setting.EndTime);        // returns 5pm
    

    这将返回最低和最高时间。其他答案告诉您如何获得最大值和最小值之间的差异,这似乎不是您所要求的。

    【讨论】:

    • @Pramod - 如果这是您想要的答案,请单击该问题的当前投票数旁边的小勾号...
    • +1 用于正确解释问题,而不是输入您期望的 OP 意思。
    • 我看到 4 个不同的 cmets 关于如何接受答案....并且没有接受的答案。哦,没关系,请下一个问题!
    • @Bazzz:JK 也猜到了 OP 的意思——碰巧他的解释是 OP 想要的,而我的不是。解释“输入你期望的OP意味着什么”
    【解决方案2】:

    假设您想要最小和最大时间增量:

    Settings[] settings = ...;
    
    var max = settings.Max(s => s.EndTime - s.StartTime);
    var min = settings.Min(s => s.EndTime - s.StartTime);
    

    【讨论】:

    • obj1.StartTime=8AM, obj1.EndTime=5PM,
    • @PramodChoudhari:不太确定您要说什么,但是对于这些值,它们之间的差异(EndTime - StartTime)将是一个 TimeSpan 结构,其 Hours 属性设置为 9。请参阅- operator 代表日期时间。
    • -1 OP 只是询问最大值和最小值,而不是两者之间的差异。
    • @JK:OP 要求一个具有两个字段的对象的最小值和最大值——他的意思是有待解释:-)
    【解决方案3】:

    这样做

    var max = (from item in myList
          select item.StartTime - item.EndTime).Max()
    
    var min = (from item in myList
          select item.StartTime - item.EndTime).Min()
    

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 2017-06-29
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多