динамически создавать запросы linq

Предположим, у меня есть список строк, как

list<string> cols = {"id", "name", "position"}.

Этот список генерируется динамически, и каждый в этом списке представляет имя столбца в таблице базы данных.

я хочу динамически создать запрос linq, который возвращает только эти столбцы.

var q = from e in employ
        select new {
          id = id,
          name = name,
          position = position
};

Как я могу сгенерировать запрос на основе списков входных столбцов?

 Chocoboboy13 июн. 2012 г., 02:31
Динамический Линкweblogs.asp.net/scottgu/archive/2008/01/07/… может сделать это

Ответы на вопрос(2)

System.Linq.Dynamic помог бы. К сожалению, это не включено в .NET Framework, но вы можете скачать его из блога Скотта Гатри. В вашем случае вам нужно позвонитьSelect(string selector) (со списком столбцов, жестко запрограммированным или полученным из списка). При желании мой пример включает в себя динамическийWhere пункт (Where("salary >= 50")):

List<string> cols = new List<string>(new [] { "id", "name", "position" });
var employ = new[] { new { id = 1, name = "A", position = "Manager", salary = 100 },
    new { id = 2, name = "B", position = "Dev", salary = 50 },
    new { id = 3, name = "C", position = "Secretary", salary = 25 }
};
string colString = "new (id as id, name as name, position as position)";
//string colString = "new ( " + (from i in cols select i + " as " + i).Aggregate((r, i) => r + ", " + i) + ")";
var q = employ.AsQueryable().Where("salary >= 50").Select(colString);
foreach (dynamic e in q)
    Console.WriteLine(string.Format("{0}, {1}, {2}", e.id, e.name, e.position));

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

апросов Linq. Вот пример:http://msdn.microsoft.com/en-us/library/bb882637.aspx

Ваш ответ на вопрос