我的LINQ查询返回一个有序的日历日期序列,我需要从最早的日期开始输出这个序列,这个序列的开始日期与给定的天数不同。搜索有序的LINQ查询结果
下面的代码使用线性搜索。似乎我可以使用二进制搜索来查找LINQ查询支持的开始日期。
在这个人为的例子中,我可以搜索列表,但在我的真实代码中,我试图避免将整个序列存储在内存中,我更愿意使用IEnumerable。
任何想法如何使它更有效率?我有上千项在我的查询和做线性搜索只是跛脚...
感谢 康斯坦丁
using System;
using System.Collections.Generic;
using System.Linq;
namespace consapp
{
static class Program
{
static void Main(string[] args)
{
var dates = new List<DateTime>();
var xs = dates.OrderBy(x => x);
dates.Add(DateTime.Parse("11/10/11"));
dates.Add(DateTime.Parse("02/02/11"));
dates.Add(DateTime.Parse("11/24/11"));
dates.Add(DateTime.Parse("09/09/11"));
dates.Add(DateTime.Parse("11/10/11"));
var d = DateTime.MinValue;
double offset = 1.2;
foreach (var x in xs)
{
if (d != DateTime.MinValue)
{
offset -= (x - d).Days;
}
if (offset < 1)
{
Console.WriteLine(x.ToShortDateString());
}
d = x;
}
}
}
}
的应该是好处“其中(日期 - 目标).Days> = Math.Truncate(偏移)” – akonsu 2010-11-11 21:08:24