【发布时间】:2014-12-18 12:45:48
【问题描述】:
假设我有一些过滤条件通过 CustomerFilter 对象数组传递到我的应用程序,我需要在其中运行查询并根据来自 Linq 到实体查询的这些过滤器返回结果。
因此,在这种情况下,客户将通过服务调用将 CustomerFilter 对象数组传递给我。
过滤对象:
class CustomerFilter
{
public string CustomerID;
public int[] LocationID;
}
示例数据:
CustomerID LocationID
1 1
2
3
4
2 2
3
4
我可以很容易地在外部 CustomerID 上构建查询过滤,如下所示。
查询:
public void GetCustomerResults(List<CustomerFilter> accounts)
{
List<string> customer = (from a in accounts select a.CustomerID).ToList();
var locations = ctx.Portal_SurveyLocations
.Where(w => customer.Contains(w.CustNum))
.OrderBy(o => o.LocationKey);
}
所以我可以按外部条件进行过滤,但我不确定如何按每个 CustomerID 的多个位置 ID 进行过滤。显然,仅仅放置一个 OR 子句会产生不正确的结果,因为它会拉入具有匹配 LocationID 的其他 CustomerID。
在给定传入的 CustomerFilter 对象的情况下,关于如何完成这个多级过滤器的任何想法?
【问题讨论】:
标签: c# linq linq-to-entities