C# 从父类型的子集创建匿名类型';s属性
我有一个person对象的列表,我希望能够以编程方式获取包含该对象属性子集的匿名类型。我有一个Person对象列表,比如:(VS2010.NET4.0)。人们认为这是理所当然的,但是是的,Person数据被持久保存在数据库中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(){
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]));
}
}
}