1

使用下面的类,我需要从 Meta 中匹配的 AllMeta 中选择项目。

匹配条件是 Meta.Groups.Name 中至少有 1 个组与 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; }
}

任何帮助表示赞赏。

4

1 回答 1

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)));
于 2013-10-22T10:10:54.170 回答