Linq查询从另一个列表中选择列表中的项目

时间:2013-10-22 08:00:40

标签: linq

我有一本字典和一份清单。

AllMeta: is a dictionary<string, WikiMeta>

Meta: is a list<WikiMeta>

public class WikiMeta
{
    public string ContentTitle { get; set; }
    public string PageTitle { get; set; }
    public string PageMetaDescription { get; set; }
    public List<WikiArticle> Articles = new List<WikiArticle>();
    public List<WikiGroup> Groups = new List<WikiGroup>();
}

public class WikiGroup
{
    public string Name { get; set; }
}

我需要从AllMeta中选择值,其中AllMeta.Values.Group == Meta.Group返回WikiMeta列表。

但是,我正在努力构建语法(lambda),所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

试试这个:

List<WikiMeta> wikis= AllMeta.Values
                             .Where(allmeta => 
                              Meta.Any(meta=> meta.Group == allmeta.Group))
                             .ToList();

我假设跟随:

public class WikiMeta
{
   public string Name { get; set; }
   public string Group { get; set; }
}

public IDictionary<string,WikiMeta> AllMeta { get; set; }
public List<WikiMeta> Meta { get; set; }

确保您引用了System.Linq名称空间,即

using System.Linq;