2011-09-20 46 views
0

我已經寫了一些將實體框架集合轉換爲一些固定字段的代碼。我結束了以下片段,但沒有一種方法可以實現這個目標嗎?任何方式來簡化這種邏輯?

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是實體框架的實體和c.ContactPhoneNumbers代表在相關的表項。看起來像這樣的代碼可以做得更簡單一點,也不那麼尷尬。

回答

1

既然你迭代的電話枚舉向右走,可能會更好地使用ToList()這樣你就可以使用索引:

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

是啊,這可能是我的最佳路線。 –