2013-07-05 99 views
0

我有一個IList持有的對象具有字段名稱,Id,位置,商店,人員和金額。我不想通過編寫每個屬性的語句來檢索所有這些字段的值C#IList迭代

前。

IList<CutDetail> btiCollection; 
    btiCollection[0].Id 
    btiCollection[0].location 

是否有無論如何,我可以迭代通過此列表,並檢索他們的領域內的數據,而不必具體說明他們是什麼?任何援助將不勝感激。使用

+1

你想對數據做什麼? – Bas

+3

嘗試這一個http://stackoverflow.com/a/4276597/1714342 – wudzik

+0

你想做什麼?有很多場景(序列化,數據綁定),如果您使用適當的機制,您不需要指定名稱 –

回答

2

如果你想找回你可以使用反射來創建的檢索屬性值功能列表中的項目的所有屬性的值:

List<Person> people = new List<Person>(); 
people.Add(new Person() {Id = 3, Location = "XYZ"}); 

var properties = (from prop in typeof (Person).GetProperties(BindingFlags.Public | BindingFlags.Instance) 
        let parameter = Expression.Parameter(typeof (Person), "obj") 
        let property = Expression.Property(parameter, prop) 
        let lambda = Expression.Lambda<Func<Person, object>>(Expression.Convert(property, typeof(object)), parameter).Compile() 
        select 
        new 
         { 
          Getter = lambda, 
          Name = prop.Name 
         }).ToArray(); 


foreach (var person in people) 
{ 
    foreach (var property in properties) 
    { 
     string name = property.Name; 
     object value = property.Getter(person); 
     //do something with property name/property value combination. 

    } 
} 

屬性值也可以使用反射來檢索,但是如果你有很長的列表/很多屬性,這個速度就會慢得多,並且可能會變得明顯。

+0

現在我只需要弄清楚它在做什麼。 – MasterP

-2

List<CutDetail>代替IList<CutDetail>

+1

我不知道這將如何幫助... o_O – Corak

+0

對不起,但是IList 比剛性列表更有彈性