C# 检查列表中的可用性<;T>;

C# 检查列表中的可用性<;T>;,c#,linq,list,C#,Linq,List,上课 public class StopSignal { public DateTime time { get; set; } public string symbol { get; set; } public int timeout { get; set; } } 创建: public static List<StopSignal> SignalTimeOut; SignalTimeOut = new List<

上课

public class StopSignal
    {
        public DateTime time { get; set; }
        public string symbol { get; set; }
        public int timeout { get; set; }
    }
创建:

public static List<StopSignal> SignalTimeOut;
SignalTimeOut = new List<StopSignal>();
如何在SignalTimeOut列表中检查符号的可用性

向列表提出请求,我们有以下项目:25.10.2015 04:30:00,AAPL,60

例如DateTime.Now=25.10.2015 05:25:00

  • 如果2015年10月25日04:30:00和2015年10月25日之间的差异 05:25:00<60分钟然后有一些动作
  • 如果2015年10月25日04:30:00和2015年10月25日之间的差异 05:25:00>60分钟后,我们删除此项目
  • 如果项目不在列表中,则执行另一个操作

  • 处理这个问题最直接的方法是在列表中找到匹配的元素,并用几个if语句处理它。注意:此代码假定最多有一个匹配项。如果不是这样,或者如果需要检查错误,请将.SingleOrDefault()替换为例如.ToList()并检查该列表中的元素数

    var match = SignalTimeOut.Where(s => s.symbol == desiredSymbol).SingleOrDefault();
    
    if (match == null)
    {
        Action3();
    }
    else
    {
        var age = new TimeSpan(DateTime.Now.Ticks - match.time.Ticks);
        if (age.TotalMinutes() > 60)
            Action2();
        else
            Action1();
    }
    

    你到底需要什么特别的帮助?您可以使用计时器定期执行操作。您可以使用LINQ中的方法或
    List
    类本身来检查列表的内容并操作这些内容。你到底有什么问题?请阅读至,以获取有关如何以清晰、负责任的方式表达您的问题的建议。我认为这里存在同步问题,因为它看起来像一个将添加和检查新股票的交易系统。可能值得研究使用SynchronizedCollection@PeterDuniho:我的问题是在《代码中》中,如何检查列表SaleTimeUnt中符号的可用性? >最好使用字典、使用符号作为键或使用缓存对象。
    var match = SignalTimeOut.Where(s => s.symbol == desiredSymbol).SingleOrDefault();
    
    if (match == null)
    {
        Action3();
    }
    else
    {
        var age = new TimeSpan(DateTime.Now.Ticks - match.time.Ticks);
        if (age.TotalMinutes() > 60)
            Action2();
        else
            Action1();
    }