gpt4 book ai didi

c# - 从父类型属性的子集创建匿名类型

转载 作者:行者123 更新时间:2023-11-30 18:30:22 27 4
gpt4 key购买 nike

我有一个人员对象列表,我希望能够以编程方式获取包含该对象属性子集的匿名类型。我有一个 Person 对象列表,例如:(VS 2010 .NET 4.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}
};

并且根据用户选择他们希望看到的特定属性,我想模拟

var query = from c in personList
select new
{
Weight = c.Weight,
Height = c.Height,
PersonId = c.PersonId
};

在这种情况下,用户从用户界面选择 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]));
}
}
}

这打印11、100、230 和22, 110, 130到控制台。

我想做的是在 var query... 中重新创建代码,但能够将属性列表传递给 select new 部分查询。

最佳答案

你见过this thread?吗?

将海报引用到ExpandoObject在 MSDN 上,它允许您动态创建匿名类型。

关于c# - 从父类型属性的子集创建匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21630983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com