如何迭代带有未知属性的IEnumerable
本文关键字:未知 属性 IEnumerable 何迭代 迭代 | 更新日期: 2023-09-27 18:05:32
我有许多不同的IEnumerable<T>
,它们具有各种类型的许多属性。我希望能够通过IEnumerable下的每个属性进行迭代。
例子的想法:
var data = someSource.First();
data.ForEach(o => DoStuff(o));
不幸的是,我找不到这样做的方法,目前我必须知道属性的名称才能访问它。
任何帮助都将是非常感激的。
进一步澄清:我正在使用ADO。. NET/Entity Framework with MySQL,我有一个MySQL数据库表,格式如下:http://pastebin.com/P51hURaj
包含60个label和60个Types。
using (var connection = new hyperion_collectionsmaxEntities())
{
var customs = connection.customs.First();
//connection.customs is a DbSet<custom>
//custom is defined as: http://pastebin.com/XW8pfzbD
//Need to Iterate through Customs, Ex:
//var custom1 = customs.label1; Through 60!?
}
我需要通过AddStatus(custom*)将所有60个custom输出到ListBox;
我强烈质疑这里的预期用途,但是为了回答这个问题,您可以使用反射来获取每个对象的每个属性:
var propertyValues = someSource.SelectMany(obj => obj.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Select(p => p.GetValue(obj)));
foreach(var propertyValue in propertyValues)
DoStuff(propertyValue);
或者在你的问题中更像linq - key:
someSource.SelectMany(obj => obj.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Select(p => p.GetValue(obj)))
.ToList()
.ForEach(o => DoStuff(o));