2011-12-27 2 views
1

У меня есть класс с отдельным полем для Email. Тогда у меня есть поля, как Email1, Email2, ..., Email9Как установить несколько значений свойств с тем же именем и значением счетчика с помощью отражения?

Я получаю значения в виде XML, как этот

<user Email="[email protected]"> 
    <Contact Name="test1" Email="[email protected]"/> 
    <Contact Name="test2" Email="[email protected]"/> 
</user> 

Там не может быть никакого контакта или до девяти контактов в одного пользователя. Как я могу присвоить эти значения моим свойствам с помощью linq?

ответ

0

Для лучшего дизайна вы должны иметь объект Contact в дополнение к классу User, поэтому каждый пользователь может иметь List<Contact>, как вы описали, как это:

public class User 
{ 
    public List<Contact> Contacts { get; set; } 
    public string Email { get; set; } 
} 

public class Contact 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

Тогда запрос LINQ используется для заполнения класс может быть следующим образом:

XElement xmlDoc = XElement.Load(@"..\Users.xml"); 
var users = from x in xmlDoc.Elements() 
      select new User 
      {     
       Email = (string) x.Attribute("Email"), 
       Contacts = new List<Contact>(
          from c in x.Elements() 
          select new Contact 
          { 
           Name = (string) c.Attribute("Name"), 
           Email = (string) c.Attribute("Email") 
          } 
       ) 
      }; 
Смежные вопросы