我有一个简单的表格来记录输入日期。我想选择相隔 X 分钟的记录。
IMAGE_LOCATION IMAGE DATE
============== =============
2227.jpg 08/03/2014 22:27:47
2228.jpg 08/03/2014 22:28:48
2229.jpg 08/03/2014 22:59:49
2230.jpg 08/03/2014 23:12:50
2231.jpg 08/03/2014 23:29:49
Run Code Online (Sandbox Code Playgroud)
从上面的示例中,我希望查询返回相隔至少 X 分钟的项目,比如说 30 分钟。因此,从上面的列表中,仅返回 2227.jpg、2229.jpg 和 2231.jpg。
这是我到目前为止所拥有的,只返回最新的图像,但是我需要最新的图像,但记录之间至少间隔 30 分钟。
using (var db = new GibFrontierEntities())
{
var result = (from u in db.CCTV_IMAGES.OrderByDescending(u => u.ImageDate)
select u).Take(rows);
return result.ToList();
}
Run Code Online (Sandbox Code Playgroud)
dan*_*ish -1
正如已经提到的,这可以通过迭代轻松实现。但是,如果您确实必须处理 LINQ 表达式,这里有一个快速但肮脏的示例,它将返回相隔 30 分钟的日期:
List<DateTime> dateLlist = new List<DateTime>();
dateLlist.Add(new DateTime(2014, 1, 1, 1, 0, 0, 0));
dateLlist.Add(new DateTime(2014, 1, 1, 1, 10, 0, 0));
dateLlist.Add(new DateTime(2014, 1, 1, 1, 45, 0, 0));
DateTime previousTime = new DateTime();
bool shouldAdd = false;
List<DateTime> newList = dateLlist.Where(x =>
{
shouldAdd = (previousTime == DateTime.MinValue || previousTime.AddMinutes(30) < x);
previousTime = x;
return shouldAdd;
}).ToList();
Run Code Online (Sandbox Code Playgroud)