【问题标题】:Is it possible to do a "where <property> in <set>" query with Breeze js是否可以使用 Breeze js 进行“<set> 中的 <property>”查询
【发布时间】:2014-09-22 22:22:13
【问题描述】:

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

我正在使用实体框架,我有一个 Order 对象,它有一个 UserId 属性:

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

    public long UserId { get; set; }

    // ... other properties

}

我有一个控制器,它将在 IQueryable 中返回订单:

[HttpGet]
public IQueryable<Order> Orders()
{
    return Db.Orders.OrderByDescending(o => o.Id);
}

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

我不知道是否可以,如果可以,怎么办?即:

var userIds = [1,4,78];

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

【问题讨论】:

    标签: c# entity-framework odata breeze


    【解决方案1】:

    尝试做这样的事情:

        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();
    

    【讨论】:

    • 嘿!我觉得很傻,我没想过要尝试它,因为我一直在寻找“IN”运算符。这就像一个魅力,稍微修改一下它是轻而易举的。Predicate.create()
    • 我们确实希望 OData 查询语法支持“in”子句;它没有
    猜你喜欢
    • 2015-01-25
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多