Несколько параметров поиска с LINQ

Я пишу то, что, по моему мнению, должно быть относительно простым приложением Windows Form. Я использую LINQ to SQL, хотя раньше никогда не использовал. У нас есть база данных SQL Server, и я создаю интерфейс для доступа к этой базе данных. Я пытаюсь найти наиболее эффективный способ поиска с его помощью нескольких (произвольного количества) параметров поиска.

В форме Windows я создаю словарь с каждым ключом поиска и его значением для поиска и передаю это в мой метод search (). Я пытаюсь найти способ поиска в базе данных по каждому из этих ключей и связанных с ними значений. Вот что я пытаюсь сделать:

public IQueryable<Product> Search(Dictionary<string, string> searchParams)
{
   DBDataContext dc = new DBDataContext();
   var query = dc.Products;

   foreach (KeyValuePair<string, string> temp in searchParams)
   {
      query = query.Where(x => x.(temp.Key) == temp.Value);
   }

   return query;
}

Я понимаю, что синтаксически x. (Temp.Key) неверен, но я надеюсь, что это иллюстрирует то, что я пытаюсь сделать. Мне было интересно, есть ли другой способ сделать то, что я пытаюсь сделать, без необходимости делать гигантский оператор switch (или if / else if tree).

EDIT

Итак, я немного изменил его, но У меня все еще проблемы с этим. Вот что у меня сейчас есть:

public IQueryable<Product> Search(Dictionary<string, string> searchParams)
{
    DBDataContext dc = new DBDataContext();

    string sQuery = "";
    foreach (KeyValuePair<string, string> temp in searchParams)
    {
        sQuery += temp.Key + "=" + temp.Value + " AND ";
    }

    var query = dc.Products.Where(sQuery);

    return query;
}

Согласно статье библиотеки динамических запросов LINQ, это должно быть нормально. Вот ошибка, которую я получаю:

Аргументы типа для метода 'System.Linq.Queryable.Where (System.Linq.IQueryable, System.Linq.Expressions.Expression>)' не могут быть выведены из использования. Попробуйте явно указать аргументы типа.

8
задан jnevelson 28 October 2010 в 23:52
поделиться