![](/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.