Как DynamicQueryable поддерживает оператор Array? - PullRequest
0 голосов
/ 17 февраля 2011

Я использую расширения DynamicQueryable Linq, представленные в блоге Скотта Гатри .

В документации есть таблица поддерживаемых операторов. Одним из основных операторов является следующее:

х [...] Доступ к массиву или индексатору. Многомерные массивы не поддерживаются.

Однако я не могу понять, как это можно использовать.

Я не ожидал, что что-то из следующего будет работать, и на самом деле это не так.

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, но я не уверен, как его выразить.

1 Ответ

0 голосов
/ 22 марта 2011

Возможно, это недоразумение.Это означает, что можно запрашивать элементы коллекции в определенной позиции индекса.Например:

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

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

Затем вы можете запросить все заказы, которые имеют подробное описание «Велосипед» в третьем OrderDetail:создать цепочку «ИЛИ» "it.Id == 1 or it.Id == 2 or it.Id == 3" (или динамически построить эту строку запроса в цикле) без параметров в методе Where.

...