我一直在使用Scott Guthrie的blog post中的DynamicQueryable Linq扩展。
该文档有一个受支持的运算符表。其中一个主要运营商如下:
X [...] 数组或索引器访问。不支持多维数组。
但是,我无法弄清楚如何使用它。
我没想到以下任何一项工作,事实上他们没有。
var ctx = new MyDbContext();
var parameters = new Object[] { new int[] { 1, 2, 3 } };
var qry = ctx.Set<User>().Where<User>("it.Id in @0", parameters);
var qry = ctx.Set<User>().Where<User>("it.Id.In(@0)", parameters);
var qry = ctx.Set<User>().Where<User>("it.Id = @0", parameters);
var qry = ctx.Set<User>().Where<User>("@0.Contains(it.Id)", parameters);
它基本上是一个In查询,但我不知道如何表达它。
答案 0 :(得分:0)
这可能是一种误解。意思是可以在特定索引位置查询集合元素。例如:
public class Order
{
public List<OrderDetail> OrderDetails { get; set; }
}
public class OrderDetail
{
public string Description { get; set; }
}
然后您可以通过以下方式查询在第三个OrderDetail中具有详细描述“Bicycle”的所有订单:
string parameter = "Bicycle";
var qry = ctx.Set<Order>().Where<Order>("it.OrderDetails[2].Description == @0",
parameter);
我认为出于您的目的,您需要在Where方法中不使用参数来构建“OR”链"it.Id == 1 or it.Id == 2 or it.Id == 3"
(或在循环中动态构建此查询字符串)。