使用 SwitchWhere


  虽然有了 AssertWhere 扩展方法,但是有时候还是需要根据不同的值去 switch 不同的 lambda 表达式,所以你可以使用 SwitchWhere 扩展方法来实现这样的功能。如下所示:

[TestMethod]
public void TestSwitchWhere()
{
    using (var db = new DbContext())
    {
        var state = 0;

        var list = db.Orders
            .SwitchWhere(state, b => b
                .When(0, s => s.OrderDate >= DateTime.Now)
                .When(1, s => s.OrderDate >= DateTime.Now.AddDays(-7))
                .When(2, s => s.OrderDate >= DateTime.Now.AddDays(-30)
                .Else(s => s.OrderDate.Year <= 0))
            );
    }
}