0

我一直在使用 Scott Guthrie 的博客文章中介绍的 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 查询,但我不知道如何表达它。

4

1 回答 1

0

这或许是一种误解。意思是可以在特定索引位置查询集合元素。例如:

public class Order
{
    public List<OrderDetail> OrderDetails { get; set; }
}

public class OrderDetail
{
    public string Description { get; set; }
}

然后您可以通过以下方式查询在第三个 OrderDetail 中具有 Detail 描述“Bicycle”的所有订单:

string parameter = "Bicycle";
var qry = ctx.Set<Order>().Where<Order>("it.OrderDetails[2].Description == @0",
    parameter);

我认为出于您的目的,您需要"it.Id == 1 or it.Id == 2 or it.Id == 3"在 Where 方法中不带参数的情况下构建“OR”链(或在循环中动态构建此查询字符串)。

于 2011-03-21T21:02:02.257 回答