【发布时间】:2019-07-10 11:28:19
【问题描述】:
我正在努力寻找前几个月没有付款的人
public ActionResult Arrears()
{
int month = DateTime.Now.Month;
int year = DateTime.Now.Year;
int i = 4;
do
{
var subscriber = db.Subscriptions
.Where(s => s.SubMonth == month && s.SubYear == year)
.Select(s => s.UserName).Distinct().ToList();
var alls = db.Members.Select(s => s.UserName).ToList();
var notsubs = alls.Except(subscriber).ToList();
List<Subscription> user = new List<Subscription>();
List<Subscription> querie = new List<Subscription>();
notsubs.ForEach(s => user.Add(new Subscription(s)));
month = month - 1;
i = i - 1;
return View(user);
} while (i != 0);
}
它给了我一个仅在当月没有订阅但我想要过去 4 个月的会员列表
【问题讨论】:
-
不要循环查找。相反,您应该进行一次查找,返回您感兴趣的 4 个月期间的所有非订阅者。此外,如果您将订阅月份和年份放入日期列中,您会发现更容易查询(如果您有一天它也会去那里,或者你可以只使用1)。然后,您可以进行日期范围查询,而不必对不同年份进行月份范围查询。
SubscriptionDate Between '2018-11-01' and '2019-02-28'而不是(SubYear = 2018 AND SubMonth Between 11 AND 12) OR (SubYear = 2019 AND SubMonth Between 1 AND 2) -
请花时间正确格式化您的代码。
标签: c# asp.net-mvc linq