Существует бесплатная (с открытым исходным кодом) библиотека, предоставляемая Microsoft для анализа строк в лямбда-выражениях, которые затем могут использоваться в запросах Linq. Он также содержит версии стандартных операторов запросов, таких как Where (), которые принимают строковый параметр. Вы можете найти его , описанный в блоге Скотта Гатриса на Dynamic Linq.
Например, вы можете выполнять такие запросы (адаптировано из фрагмента ссылки Скотта Гутри)
// imagine these have come from a drop down box or some other user input...
string thingToSelectBy = "City";
string citySelectedByUser = "London";
int minNumberOfOrders = 10;
string whereClause = String.Format("{0} = @0 and Orders.Count >= @1", thingToSelectBy);
var query = db.Customers
.Where(whereClause, citySelectedByUser, minNumberOfOrders)
.OrderBy("CompanyName")
.Select("new(CompanyName as Name, Phone");
Предложение Where в этом фрагменте кода показывает, как создать предложение where, используя параметризованную строку, а затем динамически вводить значения для параметров во время выполнения, например, на основе пользовательского ввода. Это работает для параметров любого типа.
В вашем примере предложение where будет
whereClause = "AccountId = 1000";
Таким образом, в действительности вы будете делать что-то вроде
var newFilteredQueryData = queryData.Where("AccountId = 1000");
Эта ссылка также содержит место, где вы можете загрузить исходный код, и подробный документ с описанием API динамического запроса и языка выражений.