在对象列表中的字典中按关键字过滤?

时间:2019-03-04 02:54:25

标签: c# linq dictionary

我创建了List<YouTubeChannelInfo>,其中包含许多YouTube频道列表。

YouTubeChannelInfo具有名为“播放列表”的Dictionary属性,其中包含“播放列表标题”作为键,并包含“ ID”作为值。因此,给定频道可能会有很多播放列表。

public class YouTubeChannelInfo
{

    public string Name { get; set; } // Channel Name
    public Dictionary<string, string> Playlists { get; set; } // Key - Playlist Title, Value - Playlist ID
}

我有string[] playlists,其中包含一系列播放列表标题,并且仅需要根据这些播放列表标题过滤YouTube频道。

List<YouTubeChannelInfo> youTubeChannelsInfo = GetChannels();
string[] playlists = GetPlaylists();
youTubeChannelsInfo = FilterByPlaylists(youTubeChannelsInfo, playlists); // Anyway to do this ?

如果我可以使用Linq进行过滤,那会更好

1 个答案:

答案 0 :(得分:2)

应该与使用WhereAny以及ContainsKey一样简单

List<YouTubeChannelInfo> youTubeChannelsInfo = GetChannels();
string[] playlists = GetPlaylists();
var filtered = youTubeChannelsInfo.Where(x => playLists.Any(y => x.Playlists.ContainsKey(y))).ToList();