可以通过多个值

时间:2016-06-14 08:37:17

标签: c# .net linq-to-sql

我对此感到有点恼火,我有一个来自查询的客户列表:

IQueryable<Customer> Customers()
{
 return myDc.Customers;
}

这将返回所有客户。

Customers表格还有两列,风险状态。风险告诉我们我们对该客户的风险,状态告诉我们他们的账户所处的状态。

用户有一个搜索页面,可以选择多个风险和状态。我将选定值捕获到List个整数中,并希望将其传递到上面的查询中。

由于用户可以选择多个风险值(和状态),如果我在foreach查询周围有一个Customers,它就不会获得用户选择的所有风险,即

foreach (int r in RisksList)
{
  return Customers.Where(r=> r.Risk.Tostring().Contains(r.ToString());
}

当执行上述查询时,它会将其限制为找到的第一个Risk,但不会捕获RisksList中包含的任何其他风险。

我会对状态进行相同的操作(一旦我有正确的风险记录)。

如何限制RisksList中包含的整数值找到的所有客户(然后限制StatusList)?

编辑1

    IQueryable<Customer> customers = from c in myDc.Customers select c;

    foreach (int i in RisksList)
    {
        customers = from cc in customers where (RisksList.Contains(i)) select cc;
    }

2 个答案:

答案 0 :(得分:1)

删除foreach并使用此功能。

return Customers.Where(r=> RisksList.Any(x=> r.Risk.ToString().Contains(x.ToString()));

答案 1 :(得分:0)

  

当执行上述查询时,它将其限制为找到的第一个Risk,   但是没有捕获RisksList中包含的任何其他风险。

这是因为你的循环中有return语句。

您可以将其添加到结果列表中,或者您可以尝试更清洁的方式,而不是返回结果:

return Customers.Where(r=> RiskLists.Contains(r.Risk));

您的其他名单也一样。