我对此感到有点恼火,我有一个来自查询的客户列表:
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;
}
答案 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));
您的其他名单也一样。