Hro*_*rom 24 .net linq linq-to-entities
我在SQL中有一个例子如何在Linq to Entity中使用相同的逻辑?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
Run Code Online (Sandbox Code Playgroud)
spe*_*der 33
我在假设C#.
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*eau 11
您希望它在开始日期包含在内,但在结束日期独占.这是因为DateTime用作日期的确是当天的开始,并且不会延伸到当天结束.
// dates that are inclusive on the date range
var startDate = new DateTime(2016, 1, 1);
var endDate = new DateTime(2016, 12, 31);
...
// WRONG: this will ignore data on the last day
.Where(obj => obj.StartDate >= startDate && obj.EndDate <= endDate)
// RIGHT: this will include the last day
var endDateExclusive = endDate.AddDays(1);
...
.Where(obj => obj.StartDate >= startDate && obj.EndDate < endDateExclusive)
Run Code Online (Sandbox Code Playgroud)
即使你使用特定的DateTime值,它仍然可以使用重要的>=和<,而不是>=和<=或>和<.
如果同时使用两个>=和<=符号,那么从X到Y和从Y到Z的两个日期范围都将包括与Y完全匹配的记录.根据您的要求,在两个日期范围中包含记录可能是一个严重的缺陷.同样,如果您使用>和<,则会从与Y完全匹配的两个日期范围中排除记录.
| 归档时间: |
|
| 查看次数: |
35136 次 |
| 最近记录: |