Linq -不在逗号分隔的列表中

本文关键字:分隔 列表 Linq | 更新日期: 2023-09-27 18:02:17

我有一个名为game的对象,它有一个名为channels的属性(以逗号分隔,因为一个游戏可以与多个channel相关)。

我还有一个channel对象,它包含一个名为isActive的属性。

我需要的是一种方法,让所有的游戏都有活跃的渠道。

我开始写这个:

var oGames = games.AllActive.Where(
    g => !g.StateProperties.Channels.Contains(
        channels.All.Where(c => c.StateProperties.IsActive).ToArray()
    );

但是被屏蔽了…有人能帮我吗?

Linq -不在逗号分隔的列表中

var oGames = games.AllActive
    .Where(g => g.StateProperties.Channels.Split(',')
                 .Intersect(channels.Where(c => c.StateProperties.IsActive)
                                    .Select(c => c.Name)).Any());

我强烈建议不要使用csv格式的通道名,而是存储对通道名的引用。

这将大大简化代码。使用字典将字符串映射到通道也会有所帮助。