我有兩個列表包含的GUID:從使用LINQ,在項目出現在其它兩個列表列表中選擇項目
var activeSoftware = channels.ByPath("/software/").Children.Where(c => c.StateProperties.IsActive).Select(c => c.Guid);
var activeChannels = channels.ByPath("/game-channels/").Children.Where(c => c.StateProperties.IsActive).Select(c => c.Guid);
和另一個列表,遊戲:
List<MyCms.Content.Games.Game> games = new List<MyCms.Content.Games.Game>();
的遊戲對象有兩個屬性可以使用:
game.gamingproperties.software
- 其中包含軟件的指導 game.stateproperties.channels
- 逗號列表分隔的GUID
是的,我知道它不好保存逗號分隔值的字段, 但我不能在這個時間點改變(其媒體鏈接工作40+網站)
我想做的事情,就是選擇所有遊戲中的軟件是有效的(通過比較softwarelist
到game.gamingproperties.software
),他們出現在通道被激活(通過檢查game.stateproperties.channels
包含任何的activechannels
的GUID)
原本,我已經這樣做了:
foreach (var channel in activeSoftware)
{
foreach (var match in oGames.AllActive.Where(g => !string.IsNullOrEmpty(g.GamingProperties.UrlDirectGame) && g.GamingProperties.Software.Contains(channel) && g.StateProperties.Channels.Split(',').Intersect(activeChannels).Any()))
{
games.Add(match);
}
}
但我相信我可以擺脫那些討厭的foreach,只是使用linq。
你怎麼覺得對象模型有點奇怪? – Dementic
只是'match.GamingProperties.Software'&'match.StateProperties.Channels'似乎有點囉嗦,並不是很清楚它們的目的。我必須在一定程度上提供我對信仰的回答。 – Enigmativity