我有下表:
我要报告以搜索特定日期范围(firstDay,endDay)内的所有付款及其客户和公司。
我仅对CustomerPayment使用此代码,并且对CustomerHistory和companyHistory表也必须这样做。
而且性能真的很差。
有什么方法可以改善查询,还是应该更改数据库设计?
var payments= db.CustomerPayment.Where(s =>>
((firstDay <= s.EndDate && lastDay >= s.StartDate) &&
(lastDay <= s.EndDate || lastDay >= s.EndDate) &&
(firstDay > s.StartDate || firstDay < s.StartDate)) ||
((s.EndDate == null) && ((firstDay >= s.StartDate) ||
(firstDay <= s.StartDate && lastDay >= s.StartDate)));
答案 0 :(得分:1)
var payments= db.CustomerPayment.Where(s =>>
(s.StartDate <= lastDay && (a.EndDate >= firstDay || a.EndDate == null));