可以通过多个值限制返回的结果

Possible to limit returned results by multiple values

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

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

此returns所有客户。

Customers table 有两个额外的列,RiskStatus。 Risk 告诉我们我们与该客户有什么风险,Status 告诉我们他们的账户处于什么状态。

用户有一个搜索页面,他们 select 多个风险和状态。我将它们的 selected 值 捕获到一个 List 整数中,并想将其传递到我上面的查询中。

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

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

执行上述查询时,它会将其限制为找到的第一个风险,但不会捕获 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;
    }

When the above query executes it limits it to the first Risk found, but any other Risks contained within RisksList is not captured.

那是因为你的 return 语句在你的循环中。

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

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

您的其他列表也一样。

删除 foreach 并只使用它。

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