Любой способ оптимизировать эту логику? - PullRequest
0 голосов
/ 21 сентября 2011

Я написал некоторый код, который переводит коллекцию Entity Framework в некоторые фиксированные поля. Я получил следующий фрагмент, но разве нет более изящного способа сделать это?

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 является сущностью Entity Framework, а c.ContactPhoneNumbers представляет записи в связанной таблице. Похоже, этот код можно сделать немного более простым и менее неловким.

1 Ответ

1 голос
/ 21 сентября 2011

Поскольку вы итерируете перечисление телефона сразу, может быть лучше использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...