Linq在列表中包含值

4

这个有点难以解释,但我希望一些代码可以帮助:

        var softChannels = channels.ByPath("/software/").Children.Where(c => c.StateProperties.IsActive);

        var tmpGames = new List<MyCms.Content.Games.Game>();
        // Get games only from active game channels
        foreach (var channel in channels.ByPath("/gameslivecasinodirectcom/game-channels/").Children.Where(c => c.StateProperties.IsActive))
        {
            // QUESTION IS ABOUT THIS LINE
            tmpGames.AddRange(oGames.AllActive.Where(g => g.StateProperties.Channels.Contains(channel.Guid) && g.GamingProperties.Software.Contains(softChannels)));
        }

我想做的是,如果g.GamingProperties.Software中包含软件通道(softChannels)的Guid之一,则将其添加。也许有一个不同的方法会更好……有什么建议吗?

p.s 我知道那行代码不起作用,我只是为了方便理解所以放在那里。

编辑: 我认为我已经解决了:

var softChannels = channels.ByPath("/software/").Children.Where(c => c.StateProperties.IsActive).Select(c => c.Guid);

var tmpGames = new List<MyCms.Content.Games.Game>();
// Get games only from active game channels
foreach (var channel in channels.ByPath("/gameslivecasinodirectcom/game-channels/").Children.Where(c => c.StateProperties.IsActive))
{
    tmpGames.AddRange(oGames.AllActive.Where(g => g.StateProperties.Channels.Contains(channel.Guid) && softChannels.Contains(g.GamingProperties.Software.Trim())));
}

如果有人发现错误,请告诉我。


具体是什么出了问题?你收到了什么错误信息? - BrokenGlass
g.GamingProperties.Software 是什么类型? - SLaks
1个回答

6
您想检查softChannels中是否包含任何一个通道:
softChannels.Any(sc => g.GamingProperties.Software.Contains(sc))

实际上,你甚至可以编写


softChannels.Any(g.GamingProperties.Software.Contains)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接