找到另一个对象的对象的有效解决方案

时间:2016-03-10 21:12:46

标签: c# algorithm

我上课有电话用户,二等有电话号码。一个用户可能具有很少的电话号码,但是一个号码电话可能仅与一个用户相关联。在主系统中,我看到所有订阅者的所有呼叫。找到电话号码的所有者是否有更容易和更快捷的方法,而不是检查每个用户的循环?

public class Subscribers{
int clientID;
string name="";
string surname="";
string address="";
List<Phones> allPhones= new List<Phones>;
}

public class Phones{
string number="";
}

1 个答案:

答案 0 :(得分:1)

使用Linq这很简单。

public IEnumerable<Subscribers> FindSubscriber(
      IEnumerable<Subscribers> subscribers, string phoneNumber)
{
   return 
      from subscriber in subscribers
      where subscriber.allPhones.Any(p => p.number == phoneNumber)
      select subscriber; 
}

这将返回Subscribers列表,其中包含此电话号码。

Offtopic但很重要:更改命名。订阅者意味着订阅者列表,但事实并非如此。这使得即使是这一小段代码也不如您希望的那样可读。看看这个方法参数看起来有多混乱:

IEnumerable<Subscribers> subscribers

这个简单的更改可以帮助其他读者了解您的代码:

IEnumerable<Subscriber> subscribers