在嵌套列表中查找匹配项的Linq查询
使用下面的类,我需要从AllMeta中选择在Meta中有匹配项的项 匹配条件是Meta.Groups.Name中至少有一个组与AllMeta.Values.Groups.Name中的组匹配在嵌套列表中查找匹配项的Linq查询,linq,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 strin
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; }
}
AllMeta:是一本字典
梅塔:是维基梅塔吗
公共类WikiMeta
{
公共字符串ContentTitle{get;set;}
公共字符串PageTitle{get;set;}
公共字符串PageMetaDescription{get;set;}
公共列表文章=新列表();
公共列表组=新列表();
}
公共类维基组
{
公共字符串名称{get;set;}
}
感谢您的帮助。嵌套的
Any
是最直接的方法:
var result = AllMeta
.Where(kv =>
Meta.Any(m =>
m.Groups.Any(mg =>
kv.Value.Groups.Any(vmg =>
vmg.Name == mg.Name))));
抱歉,蒂姆,规格中有轻微错误。梅塔是个单身汉 WikiMeta,但包含一个或多个组
谢谢你的及时回答,蒂姆-我会测试它的。对不起,蒂姆,规格中有点小错误。Meta是单个WikiMeta,但包含一个或多个组。
var result = AllMeta
.Where(kv => Meta.Groups.Any(mg => kv.Value.Groups.Any(vmg => vmg.Name == mg.Name)));