Date value
10/03/2014 77
10/02/2015 66
10/01/2016 12
10/01/2016 34
10/01/2016 55
---
---
直到30条记录
我想编写一个linq查询来获取最近30天的值加一 在过去30天之前的价值。
所以我想要一个回复
所有这些记录
10/01/2016 12
10/01/2016 34
10/01/2016 55
---
---
加上一条记录
10/02/2015 66
只是想知道它是否可能,或者我应该获得这些值 两个不同的查询。注意我正在使用mongodb。
答案 0 :(得分:1)
信息很少:
var last30Days = sourceList.Where(rec => rec.DateField.Date >= DateTime.Today.AddDays(-30));
var firstOneAfter30Days = sourceList.Where(rec => rec.DateField.Date < DateTime.Today.AddDays(-30)).Take(1);
var allTogether = last30Days.Union(firstOneAfter30Days);
注意:Take(1)
也可能是FirstOrDefault()
。您可以将它写在一行中,但这样可以更清楚。
答案 1 :(得分:0)
您可以执行以下操作。我使用source
来引用您的记录集。
//Create your "Last 30 days" timeframe
DateTime endDate = DateTime.Now;
DateTime startDate = endDate.AddDays(-30);
//Use a query to get the "one before" record
var firstBeforeStart = source.FirstOrDefault(i => i.Date < startDate);
//Use the date of the "one before" record to calculate a query start date
var queryStart = firstBeforeStart == null ? startDate : firstBeforeStart.Date;
//Run another query to get all data based on the amended query start date
var allRecords = source.Where(i => i.Date >= queryStart && i.Date < endDate);