有什么方法可以简化这种逻辑?

时间:2011-09-20 20:26:35

标签: 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是实体框架实体,c.ContactPhoneNumbers表示相关表中的条目。似乎这个代码可以更直接,更不尴尬。

1 个答案:

答案 0 :(得分: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;
}