2013-10-22 83 views
1

使用下面的類我需要從AllMeta中選擇Meta中匹配的項。Linq查詢找到嵌套列表中的匹配

匹配條件是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; } 
} 

任何幫助表示讚賞。

回答

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,但擁有一個或多個Groups。

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

感謝您的提示答案蒂姆 - 我會測試它 – dotnetnoob

+0

添道歉,在規格略有誤差。 Meta是一個WikiMeta,但有一個或多個Groups。 – dotnetnoob