簡體   English   中英

如何將IEnumerable轉換為具有選定字段的匿名類型

[英]How to cast IEnumerable to anonymous type with selected fields

所以,我有一些字符串數組:

列1列3

我在田間上課

class A
{
 object Column1;
 object Column2;
 object Column3;
 object Column4;
 object Column5; 
}

現在我有一個A對象列表

List<A> ListOfA = new List<A>();

該列表包含N個元素。

現在,如何將其從該數組轉換為某個對象? 並具有List<NewAnonymous>

我想擁有new { Column1 = '', Column3=''}但我不知道該數組中將包含哪些列。

這有可能嗎? 如果是,我可以在哪里尋找。 我有一些課程代碼,但是我認為這無濟於事,所以我只是想解釋我想說的話

基於對該問題的評論,我建議:

foreach (A a in listOfA)
{
    var t = typeof(A);
    List<object> list = new List<object>();

    foreach (var prop in t.GetProperties())
    {
        list.Add(prop.GetValue(a));

    }
    newListOfA.Add(list);
}

編輯:如果您更喜歡基於非查詢的LINQ,這是EarthEngine的LINQ的擴展

t = typeof(A)
listOfA.SelectMany(o=>t.GetProperties().Select(i=>i.GetValue(o))

與默多克的答案相同,但使用純LINQ

from a in listOfA
let t = typeof(A)
from prop in t.GetProperties()
select prop.GetValue(a)

我將逆轉當前趨勢,並說您可以通過反思來做到這一點,但您不應該這樣做。

為什么? 因為現在您有了一個不知道其屬性的匿名類型。 您將如何在下游使用它? 更多反思?

如果您有未知數量的字段,則最好以索引方式(列表或字典)處理它們,而不是那種反射坑。

暫無
暫無

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

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