我有一个名为game的对象,它有一个名为channels的属性(由于游戏可以与多个通道相关,因此以逗号分隔)。
我还有一个通道对象,它包含一个名为isActive的属性。
我需要的是一种让所有拥有有效频道的游戏的方法。
我开始写这个:
var oGames = games.AllActive.Where(
g => !g.StateProperties.Channels.Contains(
channels.All.Where(c => c.StateProperties.IsActive).ToArray()
);
但被封锁了......任何人都可以帮助我?
答案 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频道名称,而是存储对它们的引用。
这会简化代码。使用将字符串映射到通道的字典也会有所帮助。