【发布时间】:2010-08-25 09:49:43
【问题描述】:
我有一个集合 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 SQL 与动态构造的字符串 where 子句一起使用,但是虽然不是严格的硬编码,但我仍然使用属性的字符串名称。
难道我不能动态地为 .Select 投影方法构造一个表达式来确定结果对象中包含哪些属性吗?
【问题讨论】:
标签: c# entity-framework linq