检查Structs列表是否包含元素

时间:2016-06-01 13:15:14

标签: c# list struct contains

我有结构客户端和客户列表。

struct Client
        {
            public IPEndPoint endpoint;   
            public string ClientName;
        }
List<Client> clientList = new List<Client>();

如何查看我的列表是否包含具有特定名称的客户端?我试过这样做

if(clientList.Find(Client => Client.ClientName == userNickname)

但不幸的是,它并没有返回bool值。

2 个答案:

答案 0 :(得分:6)

您可以使用LINQ的Any()方法:

bool contains = clientList.Any(client => client.ClientName == userNickname);
在这种情况下,

AnyFind()更容易,因为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不可变或只是做其他事情。