construir linq consultas dinámicamente

Supongo que tengo una lista de cadenas, como

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

Esta lista se genera dinámicamente, y cada uno en esta lista representa un nombre de columna en una tabla de base de datos.

Lo que quiero hacer es crear una consulta de linq dinámicamente que devuelva solo estas columnas.

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

¿Cómo puedo generar una consulta como esa basada en las listas de columnas de entrada?

Respuestas a la pregunta(2)

Su respuesta a la pregunta