Linq查询问题基于订单日期

时间:2011-01-20 17:30:19

标签: c# linq

我是linq的新手并且正在努力创建查询。这些表是“客户”表和“订单”表,具有一对多的关系。

我有一个功能,我想返回一个客户列表。

enum CustomerStatus
{
    one,
    two,
    three
}

public List<Customer> GetCustomerByStatus(enum customerStatus)
{
   ...
}

所以,如果我将上述函数称为GetCustomerBystatus(one),我想要一个列表 客户,其最近的订单具有订单日期&lt;今天。

如果我将上述功能称为GetCustomerBystatus(two)我想要一个列表 客户,其最近订单的订单日期=今天。

如果我将上述功能称为GetCustomerBystatus(one)我想要一个列表 客户,其最近订单的订单日期&gt;今天。

编写linq语句的最佳方法是什么?

我希望这是有道理的。谢谢。

2 个答案:

答案 0 :(得分:2)

像往常一样构建查询,无需任何过滤。

然后在switch块中,你可以根据枚举值传递给方法来应用不同的where子句。

答案 1 :(得分:1)

伊恩是对的。这是一个样本。

public List<Customer> GetCustomerByStatus(CustomerStatus customerStatus)
    {
        var query = from customer in this.Customers
                        select customer;

        switch (customerStatus)
        {
            case CustomerStatus.one:
                query = query.Where(customer => customer...);
                break;
            case CustomerStatus.two:
                query = query.Where(customer => customer...);
                break;
            case CustomerStatus.three:
                query = query.Where(customer => customer...);
                break;
        }

        return query.ToList();
    }