C# 将Linq表达式转换为URI时出错:方法';包含';不支持

C# 将Linq表达式转换为URI时出错:方法';包含';不支持,c#,linq,wcf,C#,Linq,Wcf,我试图使用列表筛选数据服务,但是,我收到一些错误消息。有没有一种方法可以使用DataServiceQuery按列表进行筛选 DataServiceQuery<Order> ordersQuery = (from x in entities.Orders .Expand<DataServiceCollection<Shipment>>(a => a.Shipments)

我试图使用列表筛选数据服务,但是,我收到一些错误消息。有没有一种方法可以使用DataServiceQuery按列表进行筛选

DataServiceQuery<Order> ordersQuery = (from x in entities.Orders
                                       .Expand<DataServiceCollection<Shipment>>(a => a.Shipments)
                                       .Expand<DataServiceCollection<OrderItem>>(a => a.OrderItems)
                                       .Expand<OrderStatus>(a => a.OrderStatus)
                                       .Expand<Customer>(a => a.Customer)
                                       .Expand<Store>(a => a.Store)
                                       .Expand<Marketplace>(a => a.Marketplace)
                                       .Expand("Shipments/Carrier")
                                        where  x.OrderStatusID != 4
                                        select x) as DataServiceQuery<Order>;

        if (beginDate != null && endDate != null)
            ordersQuery = ordersQuery.Where(x => x.CreateDate >= beginDate && x.CreateDate <= endDate) as DataServiceQuery<Order>;

        if (statuses != null && statuses.Count() > 0)
        ordersQuery = ordersQuery.Where(a => stores.Contains(a.OrderStatus.Name)) as DataServiceQuery<Order>;

        if (stores != null && stores.Count() > 0)
            ordersQuery = ordersQuery.Where(a => stores.Contains(a.Store.StoreName)) as DataServiceQuery<Order>;

        if (!String.IsNullOrWhiteSpace(orderNumber))
            ordersQuery = ordersQuery.Where(a => a.OrderNumber == orderNumber) as DataServiceQuery<Order>;

无法添加查询选项“$filter”,因为它将与转换后的Linq表达式中的查询选项冲突。

是,使用循环和
PredicateBuilder
。但是你可以很容易地超过URL长度限制。你能给我一个例子,在这种情况下的for循环吗?
 if (statuses != null && statuses.Count() > 0)

        {
            var statusFilterList = statuses.Select(title => String.Format("(Name eq {0})", title));
            var statusFilter = String.Join(" or ", statusFilterList);
            ordersQuery.AddQueryOption("$filter", statusFilter).Execute().ToList();

        }