![](/img/trans.png)
[英]How to cast an IEnumerable<object> to an IEnumerable<runtime type>
[英]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.