c# – LINQ:根据子列表中的属性进行分组
发布时间:2020-12-15 03:53:45 所属栏目:百科 来源:网络整理
导读:我试图使用LINQ来创建基于元数据的文档的分组列表,该元数据是文档的列表. 下面是我的对象结构如何: ListDocument -- ListMetadata -- Metadata has a name and a value property. 我想根据一个名称为ID的元数据标签对文档进行分组,并将其分组,其中ID属性的
我试图使用LINQ来创建基于元数据的文档的分组列表,该元数据是文档的列表.
下面是我的对象结构如何: List<Document> --> List<Metadata> --> Metadata has a name and a value property. 我想根据一个名称为ID的元数据标签对文档进行分组,并将其分组,其中ID属性的值相同. 我试过这样: var x = response.Document .GroupBy(d => d.Metadata.Where(dc => dc.Name == DocProperty.ID) .Select(dc => dc.Value)); 这将导致单个文档的列表,但不会分组在ID上. 还考虑选择不同的ID列表,然后循环遍历文档列表,并找到与ID相匹配的文档.那个似乎很多开销,因为对于每个ID在不同列表中,我必须每次进入元数据列表并找到文档,并需要额外检查找到的多个项目,获取我需要的属性等. 任何人都有一个好主意,如何让这个事情工作? 解决方法var x = from doc in source from meta in doc.Metadata where meta.Name == DocProperty.Id group doc by meta.Value; 或(评论)流利的符号: var y = source .SelectMany(doc => doc.Metadata,(doc,meta) => new { doc,meta }) .Where(pair => pair.meta.Name == DocProperty.Id) .GroupBy(pair => pair.meta.Value,pair => pair.doc); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |