2011-09-20 3 views
0

J'ai écrit du code qui traduit une collection Entity Framework en champs fixes. Je me suis retrouvé avec l'extrait suivant, mais n'y a-t-il pas un moyen plus pratique d'y parvenir?Un moyen de rationaliser cette logique?

var numbers = c.ContactPhoneNumbers.OrderByDescending(n => n.IsPrimary); 

int count = 0; 
foreach (var number in numbers) 
{ 
    if (count == 0) 
    { 
     hc.PrimaryPhone = number.PhoneNumber; 
     hc.PrimaryPhoneType = number.PhoneNumberType; 
    } 
    else if (count == 1) 
    { 
     hc.SecondaryPhone = number.PhoneNumber; 
     hc.SecondaryPhoneType = number.PhoneNumberType; 
    } 
    else break; 
    count++; 
} 

c est une entité Entity Framework et c.ContactPhoneNumbers représente les entrées dans une table associée. On dirait que ce code pourrait être rendu un peu plus simple et moins gênant.

Répondre

1

Puisque vous itérez l'énumération de téléphone tout de suite, peut-être préférable d'utiliser ToList() afin que vous puissiez utiliser l'indexeur:

var numbers = c.ContactPhoneNumbers.OrderByDescending(n => n.IsPrimary).ToList(); 
if(numbers.Count > 0) 
{ 
    hc.PrimaryPhone = numbers[0].PhoneNumber; 
    hc.PrimaryPhoneType = number[0].PhoneNumberType; 
} 
if(numbers.Count > 1) 
{ 
    hc.SecondaryPhone = numbers[1].PhoneNumber; 
    hc.SecondaryPhoneType = numbers[1].PhoneNumberType; 
} 
+0

Oui, ce pourrait être mon meilleur itinéraire. –

Questions connexes