可以在 where 子句中指定我想要列值等于数组中某些值的数据吗?
例如:
EntityQuery.from('Customers')
.where('DepartmentID','in','[3,5,6]');
或者我应该如何有效地做到这一点,因为表有很多条目,检索所有条目效率不高?如果我一个一个做,效率高吗?
可以在 where 子句中指定我想要列值等于数组中某些值的数据吗?
例如:
EntityQuery.from('Customers')
.where('DepartmentID','in','[3,5,6]');
或者我应该如何有效地做到这一点,因为表有很多条目,检索所有条目效率不高?如果我一个一个做,效率高吗?
使用 Breeze在 1.5.1 中引入的新JSON 查询功能,您可以创建一个“WHERE value IN array”子句,如下所示:
var jsonQuery = {
from: 'Customers',
where: {
'DepartmentID': { in: [3,5,6] }
}
}
var query = new EntityQuery(jsonQuery);
只需添加多个谓词 -
var myArray = [3, 4, 5];
var predicate = new Breeze.Predicate;
var query = EntityQuery.from('Customers');
if (myArray) {
var criteriaPredicate = null;
$.each(myArray, function (index, item) {
criteriaPredicate = (index === 0)
? Predicate.create('DepartmentId', '==', item)
: criteriaPredicate.or('DepartmentId', '==', item);
if (Predicate.isPredicate(criteriaPredicate)) {
predicate = predicate.or(criteriaPredicate);
}
});
}
query = query.where(predicate);
这可能无法 100% 正确运行,但应该向您展示该怎么做 - 动态创建谓词并将它们添加到总谓词中,然后添加到查询中。
派对有点晚了,但我需要和能够做到这一点一样的东西:
公共 getFeaturedRestaurants(restaurantIds: number[]) { this.dataBreezeService.initialiseQuery('getFeaturedRestaurants', [restaurantIds]);
let query = new EntityQuery()
.from('restaurants')
.where("restaurantId", "in", restaurantIds)
.toType('Restaurant')
.expand('foodType, suburb.city')
return this.dataBreezeService.executeQueryCacheOrServerForList(query, false);
}