簡體   English   中英

從父類型屬性的子集創建匿名類型

[英]Create anonymous types from subset of parent type's properties

我有一個人物對象列表,我希望能夠以編程方式獲得包含該對象屬性子集的匿名類型。 我有一個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...的代碼var query...但是能夠將屬性列表傳遞給查詢的select new部分。

你見過這個帖子嗎?

它將海報引用到MSDN上的ExpandoObject ,它允許您動態創建匿名類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM