C# 从父类型的子集创建匿名类型';s属性

C# 从父类型的子集创建匿名类型';s属性,c#,dynamic,C#,Dynamic,我有一个person对象的列表,我希望能够以编程方式获取包含该对象属性子集的匿名类型。我有一个Person对象列表,比如:(VS2010.NET4.0)。人们认为这是理所当然的,但是是的,Person数据被持久保存在数据库中 var personList = new List<Person>() { new Person(){ PersonId=11, Weight=100, Race="Green", Height=230}, new Person(){

我有一个person对象的列表,我希望能够以编程方式获取包含该对象属性子集的匿名类型。我有一个Person对象列表,比如:(VS2010.NET4.0)。人们认为这是理所当然的,但是是的,Person数据被持久保存在数据库中

var personList = new List<Person>()
 {
      new Person(){ PersonId=11, Weight=100, Race="Green", Height=230},
      new Person(){ PersonId=22, Weight=110, Race="Blue", Height=130}
 };
在这种情况下,用户从用户界面选择PersonId、Weight和Height作为他们希望用于创建新匿名类型的属性

我有以下代码,它将以给定的方式将属性值打印到(模拟)用户可能选择的屏幕上:

PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(Person));
var propList = new List<string>()
{
     "PersonId","Weight","Height"
};

for (int i = 0; i < personList.Count; i++)
{
      for (int j = 0; j < props.Count; j++)
      {
          if (propList.Contains(props[j].Name))
          {
              //properties added to object here..but can't return anonymous type from method....
              Console.WriteLine(props[j].GetValue(personList[i]));
          }
       }
 }
PropertyDescriptorCollection props=TypeDescriptor.GetProperties(typeof(Person));
var propList=新列表()
{
“人形”、“体重”、“身高”
};
for(int i=0;i
这张照片 11、100、230和 22, 110, 130 到控制台

我试图做的是在
var查询中重新创建代码…
,但是能够将属性列表传递到查询的
select new
部分。

您看到了吗


它将海报指向MSDN上的,它允许您动态创建匿名类型。

@Brandon我很确定这不是问题哦,来吧。。。今天是星期五,笑一笑。我见过的所有蓝色人种通常都符合这个描述。比例检查出来了。我们现在可以帮助编写代码了。@DavidKhaykin这些是托伊达里亚人,他们的权重是基于对数刻度的。你能分享你想要实现的理论方法的签名吗?这不允许将查询翻译到数据库。我支持expando对象的东西。。。我们想在这里实现的只是动态对象。它迫使C#表现得像JavaScript@Servy它从来没有说有一个数据库,LINQ to sqlMy bad,我没有(现在仍然没有)看到问题的数据库部分。@Brandon如果它没有查询数据库,那么这样做毫无意义。如果它是LINQ对象,那么就没有理由不保留原始对象。
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(Person));
var propList = new List<string>()
{
     "PersonId","Weight","Height"
};

for (int i = 0; i < personList.Count; i++)
{
      for (int j = 0; j < props.Count; j++)
      {
          if (propList.Contains(props[j].Name))
          {
              //properties added to object here..but can't return anonymous type from method....
              Console.WriteLine(props[j].GetValue(personList[i]));
          }
       }
 }