如何将并发字典值转换为列表,下面是我尝试的代码。
//this collection will maitain server connections/ server can support multiple connections
public static readonly IDictionary<string, ISet<ConnectionManager>> SereverConnections = new ConcurrentDictionary<string, ISet<ConnectionManager>>();
//Get All Server Connections List
public static IList<ConnectionManager> GetAllServerConnections()
{
IList<ConnectionManager> connectionList = new List<ConnectionManager>(Global.SereverConnections.Values);
return connectionList;
//return Global.SereverConnections.Values.ToList();
//return (Gloconnections.ToList() ?? Enumerable.Empty<ConnectionManager>().ToList());
}
编译时错误:
cannot convert from 'System.Collections.Generic.ICollection<System.Collections.Generic.ISet<ChatServer.ConnectionManager>>' to 'int'
答案 0 :(得分:3)
你试过这个:
IList<ConnectionManager> connectionList = Global.SereverConnections.SelectMany(x=>x.Value).ToList();
答案 1 :(得分:0)
您在List( int size)构造函数中传递 ICollection 。当然,编译器会抱怨将ICollection转换为Integer。 您还包含集合集合,因此您的注释代码将无法正常工作,这样您就可以获得所有不同的连接:
public static IList<ConnectionManager> GetAllServerConnections()
{
return Global.SereverConnections.SelectMany(x=> x.Value).Distinct().ToList();
}
答案 2 :(得分:0)
List<ISet<ConnectionManager>> connectionList = Global.SereverConnections.Values.ToList();
这将为您提供一个“ISet”列表。 - 如果你需要继续下去,真的取决于ISet是什么。