2013-07-05 1 views
0

필드 이름, ID, 위치, 저장소, 사람 및 금액이있는 개체를 보유하고있는 IList가 있습니다. 각 속성에 대한 설명을 작성하여이 필드의 값을 가져 오지 않으려합니다.C# IList 반복

ex.

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

어쨌든이 목록을 반복하고 해당 항목의 데이터를 검색 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.

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. 

    } 
} 

:

+1

데이터로 무엇을 하시겠습니까? – Bas

+3

이 하나를 시도하십시오 http://stackoverflow.com/a/4276597/1714342 – wudzik

+0

당신은 무엇을하려고합니까? 적절한 메커니즘을 사용하는 경우 이름을 지정할 필요가없는 많은 시나리오 (직렬화, 데이터 바인딩)가 있습니다. –

답변

2

의 속성 값은 리플렉션 (reflection)을 사용하여 검색 할 수도 있지만, 매우 느리고 목록/속성이 매우 긴 경우에는 눈에 띄게됩니다.

+0

지금 난 그냥 그 일을 무엇의 확고한 이해를 얻을 수있는 딱딱한 목록보다 더 탄력적이다. – MasterP

-2

사용 List<CutDetail> 대신 당신이 속성 값을 검색하는 기능의 목록을 만들 반사를 사용할 수있는 항목의 모든 속성의 값을 검색하려면 IList<CutDetail>

+1

...하지만 IList의 Corak

+0

미안 그 도움이 될 것 궁금 –