我有许多不同的IEnumerable<T>
,它们具有各种类型的众多属性。我希望能够遍历IEnumerable下的每个属性。
示例构思:
var data = someSource.First();
data.ForEach(o => DoStuff(o));
不幸的是我找不到办法做到这一点,目前我必须知道能够访问它的属性的名称。
非常感谢任何帮助。
进一步澄清: 我正在使用带有MySQL的ADO.NET/Entity Framework,我有一个MySQL数据库表,格式如下:http://pastebin.com/P51hURaj
它包含60个标签和60种类型的标签。
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个海关输出到ListBox中答案 0 :(得分:3)
我强烈质疑这里的用途,但要回答这个问题,你可以使用反射来获取每个对象的每个属性:
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-ey:
someSource.SelectMany(obj => obj.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Select(p => p.GetValue(obj)))
.ToList()
.ForEach(o => DoStuff(o));