是否可以使用 Breeze 进行“IN”查询?

我正在使用 Entity Framework ,我有一个 Order 对象,它有一个 UserId 属性:

public class Order
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public long UserId { get; set; }

    // ... other properties

}

我有一个 Controller ,它将在 IQueryable 中返回订单:
[HttpGet]
public IQueryable<Order> Orders()
{
    return Db.Orders.OrderByDescending(o => o.Id);
}

其中 'Db' 是我的 EF 上下文。我想获得 UserId 属性在一组用户 ID 中的订单,即 [1,4,78] 或任何其他集合。

我无法确定是否可能,如果可能,如何解决? IE:
var userIds = [1,4,78];

breeze.EntityQuery
    .from("Orders")
    .using(this.manager)
    //.where("userId", "any", userIds) // this isn't right
    .execute()
    .then(
       // ...

最佳答案

尝试做这样的事情:

    var userIds = [1, 4, 78];

    var predicate = breeze.Predicate("userId", "==", userIds[0]);
    for (var i = 1; i < userIds.length; i++) {
        var userId = userIds[i];
        predicate = predicate.or(breeze.Predicate("userId", "==", userId));
    }

    breeze.EntityQuery
        .from("Orders")
        .using(this.manager)
        .where(predicate)
        .execute();

10-06 04:51