我需要获得用户与当前用户相同的所有频道
allChannels是频道列表
用户是每个频道中的一个数组
allChannels.Select(channel => new Channel
{
users = channel.Users.Where(user => user.userId == currentUserId).ToArray()
}).ToList();
这总是返回所有通道而不是过滤
答案 0 :(得分:1)
您需要检查Users
是否包含具有给定ID的任何用户:
allChannels.Where(c => c.Users.Any(u => u.UserId == currentUserId)).ToList();
答案 1 :(得分:0)
您可以使用SelectMany执行此操作: -
var result = allChannels.SelectMany(x => x.Users,
(channelObj, user) => new { channelObj, user})
.Where(x => x.user== currentUserId)
.Select(x => x.channelObj);