У меня есть коллекция IEnumerable. В запросе LINQ желательно, чтобы я хотел выбрать только свойства в этой коллекции из типа T в анонимный тип, где T - бизнес-объект POCO.
Пример:
Мой IEnumerable содержит свойства «Имя», «Возраст».
Мой POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
Я хочу добиться того же эффекта, что и ниже, но без жесткого кодирования членов анонимного типа и использования моей коллекции PropertyInfo.
IEnumerable<Person> peeps = GetPeople();
var names = from p in peeps
select new {Name = p.Name, Age = p.Age};
Если бы я использовал Entity Framework, я мог бы использовать Entity SQL с предложением динамически сконструированной строки where
, но тогда, хотя и не строго в жестком коде, я все еще использую строковые имена свойств .
Не могу ли я, возможно, динамически построить выражение для метода проекции .Select, определяющее, какие свойства включены в объект результата?