繁体   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