Я создаю общую форму (C #), которая может принимать любой запрос Linq. В этой форме я хочу иметь возможность добавлять фильтры (предложения WHERE). Для таких операторов, как '=', '>', 'Like' и т. Д. Я могу сделать что-то вроде IQueryable.Where(someFieldname + "> @0", someCriteria)
. Но когда я хочу сделать эквивалент T-sql "IN", я полностью теряюсь. Я искал часы, но не могу найти способ понять это.
Думая об этом, можно сделать так, чтобы значения IN-предложения были помещены в строковый массив или какой-либо другой простой список строк. Затем присоединитесь к этому списку с помощью базового запроса. Но как я могу объединить эти два, когда базовый запрос может быть любым запросом?
Пример:
Скажем, мой базовый запрос выглядит примерно так:
IQueryable<Object> q = from a in db.Adresses
select new { a.Street, a.HouseNr };
В форме я хочу иметь возможность фильтровать на HouseNr следующим образом: Где HouseNr IN (1, 3, 5)
Числа (1, 3, 5) доступны в виде массива строк (или любого другого списка строк).
Как мне этого добиться, зная, что базовый запрос может быть чем угодно?