我有结构客户端和客户列表。
struct Client
{
public IPEndPoint endpoint;
public string ClientName;
}
List<Client> clientList = new List<Client>();
如何查看我的列表是否包含具有特定名称的客户端?我试过这样做
if(clientList.Find(Client => Client.ClientName == userNickname)
但不幸的是,它并没有返回bool值。
答案 0 :(得分:6)
您可以使用LINQ的Any()
方法:
bool contains = clientList.Any(client => client.ClientName == userNickname);
在这种情况下, Any
比Find()
更容易,因为Find()
会返回Client
的实例。您需要进一步比较(如Jodrell建议的default(Client)
或再次比较名称)。
答案 1 :(得分:0)
ERM,
if (clientList.Find(Client => Client.ClientName == userNickname).ClientName != userNickname)
...
如果您阅读了List<T>.Find
的文档,那么您会看到如果predicate
列表中的任何元素都没有返回true,则会返回默认值T
。< / p>
显然,如果您想搜索名称为Client
的{{1}},则无法使用。
用法相当笨拙,对结构也不起作用。考虑将null
作为一个类或覆盖Client
的相等或使Client
不可变或只是做其他事情。