c# - 检查 List<T> 日期的最快方法

标签 c# generics .net-2.0 generic-list

我有一个机器工作过的日期列表,但它不包括机器停机的日期。我需要创建工作日和非工作日列表。我不确定执行此操作的最佳方法。我首先递增一个范围内的所有日期,并通过每次遍历整个列表来检查日期是否在列表中。我正在寻找一种更有效的查找日期的方法。

class machineday
{
 datetime WorkingDay;
}

class machinedaycollection : List<machineday>
{
public List<TimeCatEvent> GetAllByCat(string cat)
{
  _CategoryCode = cat;


  List<machineday> li = this.FindAll(delegate(machinedaydummy) { return true; });
  li.Sort(sortDate);
  return li;
}

int sortDate(machinedayevent1, machinedayevent2)
{
  int returnValue = -1;
  if (event2.date < event1.date)
  {
    returnValue = 0;
  }
  else if (event2.date == event1.date)
  {
    //descending
    returnValue = event1.date.CompareTo(event2.date);
  }
  return returnValue;
}
}

最佳答案

对日期进行排序并在递增计数器的同时迭代结果列表。每当计数器与当前列表元素不匹配时,您就会发现列表中缺少一个日期。

List<DateTime> days = ...;
days.Sort();
DateTime dt = days[0].Date;
for (int i = 0; i < days.Length; dt = dt.AddDays(1))
{
    if (dt == days[i].Date)
    {
        Console.WriteLine("Worked: {0}", dt);
        i++;
    }
    else
    {
        Console.WriteLine("Not Worked: {0}", dt);
    }
}

(假设列表中没有重复的日期。)

关于c# - 检查 List<T> 日期的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613577/

相关文章:

c# - 如何在客户端解压 Html 页面

c# - 忽略搜索中的注释 VS2010 C#

Java 在一个类中混合泛型

java - 在 Singleton 类中调用通用字段

c# - 文件具有与 list 中指定的不同的计算哈希值

c# - C#中将String XML转成数据表

c# - 当我们可以在 ArrayList 中存储东西(值和引用)时,为什么还要使用泛型?

java - 使用数组覆盖 Java 泛型方法

c# - ASP.NET 每个月的工作周数

asp.net - Web.Config 的 System.Web 部分中的 AllowLocation ="true"有什么作用?