Linq - 其中不以逗号分隔的列表

时间:2011-07-14 10:14:24

标签: c# linq

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

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

我需要的是一种让所有拥有有效频道的游戏的方法。

我开始写这个:

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

但被封锁了......任何人都可以帮助我?

1 个答案:

答案 0 :(得分:5)

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

我强烈建议远离csv频道名称,而是存储对它们的引用。

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