我是linq的新手并且正在努力创建查询。这些表是“客户”表和“订单”表,具有一对多的关系。
我有一个功能,我想返回一个客户列表。
enum CustomerStatus
{
one,
two,
three
}
public List<Customer> GetCustomerByStatus(enum customerStatus)
{
...
}
所以,如果我将上述函数称为GetCustomerBystatus(one)
,我想要一个列表
客户,其最近的订单具有订单日期&lt;今天。
如果我将上述功能称为GetCustomerBystatus(two)
我想要一个列表
客户,其最近订单的订单日期=今天。
如果我将上述功能称为GetCustomerBystatus(one)
我想要一个列表
客户,其最近订单的订单日期&gt;今天。
编写linq语句的最佳方法是什么?
我希望这是有道理的。谢谢。
答案 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();
}