Я создаю общую форму (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) доступны в массиве строк (или любом другом Списке строк).
Как я могу этого добиться, зная, что базовый запрос может быть любым?