Динамический выбор списка свойств объекта - PullRequest
0 голосов
/ 25 августа 2010

У меня есть коллекция 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, определяющее, какие свойства включены в объект результата?

1 Ответ

0 голосов
/ 25 августа 2010

Вы не можете этого сделать. Компилятору необходимо статически знать тип элементов в перечислении, даже если это анонимный тип (ключевое слово var обозначает неявная печать, а не динамическая печать)

Зачем вам это нужно? Если вы объясните, каковы ваши требования, мы, вероятно, можем предложить другой способ сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...