我有下面的词典。
static Dictionary<string, Room> allRooms = new Dictionary<string, Room>();
public class Room
{
public String RoomID { get; set; }
public String TeamID { get; set; }
public string RoomName { get; set; }
public string Status { get; set; }
public List<Member> ConnectedUsers { get; set; }
}
public class Member
{
public string ConnectionId { get; set; }
public string UserName { get; set; }
public string TeamId { get; set; }
public string MemberId { get; set; }
public string ConnectionStatus { get; set; }
public bool MuteChat { get; set; }
}
Member m = new Member { ConnectionId = "2", MemberId = "1", TeamId = "3", UserName = "username", ConnectionStatus = "available", MuteChat = false };
List<Member> connectedUsers = new List<Member>();
connectedUsers.Add(m);
allRooms.Add(RoomID, new Room { RoomID = "12", TeamID = "3", RoomName = "roomName", ConnectedUsers = connectedUsers });
在上面的词典&#34; Room&#34;包含&#34;会员&#34;和&#34;房间&#34;信息。 会员包含会员的详细信息,例如&#34;会员ID&#34;和其他领域 所以,我知道&#34;会员ID&#34;对于特定的人。我正在使用以下代码获取然后获取所有房间的所有成员。但我的要求是只获得memberRooms。你能建议吗
var connectionid1 = allRooms
.Select(i => i.Value).Cast<Room>()
.Where(d => d.ConnectedUsers.Count > 0)
.Select(d => d.ConnectedUsers).Cast<List<Member>>()
.SelectMany(d1 =>
d1
.Where(d => d.MemberId == userid )).ToList();
答案 0 :(得分:0)
修改您的会员类并添加Room的引用。
public class Member
{
public string ConnectionId { get; set; }
public string UserName { get; set; }
public string TeamId { get; set; }
public string MemberId { get; set; }
public string ConnectionStatus { get; set; }
public bool MuteChat { get; set; }
public Room Room { get; set; }
public string RoomID { get; set; }
}
要获取房间的所有成员,请使用以下代码:
var MemberList = DB.Members.Where(x => x.RoomID == "RoomID here").ToList();