Linq查询以查找嵌套列表中的匹配项

时间:2013-10-22 10:05:04

标签: linq

使用下面的课程,我需要选择AllMeta中与Meta匹配的项目。

匹配条件是Meta.Groups.Name中至少有一个组与AllMeta.Values.Groups.Name匹配。

AllMeta: is a dictionary<string, WikiMeta>
Meta: is a 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; }
}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

嵌套Any是直接方法:

var result = AllMeta
    .Where(kv => 
        Meta.Any(m => 
            m.Groups.Any(mg => 
                kv.Value.Groups.Any(vmg => 
                    vmg.Name == mg.Name))));
  

抱歉蒂姆,规格略有错误。 Meta是一个单一的   WikiMeta但有一个或多个组。

var result = AllMeta
  .Where(kv => Meta.Groups.Any(mg => kv.Value.Groups.Any(vmg =>  vmg.Name == mg.Name)));