我试图使用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);
原文地址:https://www.jb51.cc/csharp/93472.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。