繁体   English   中英

从linq查询中获取对象列表

[英]Get list of list of objects from linq query

有什么方法可以查询对象列表,对其进行分组,然后将它们作为自己的列表输出为列表列表? 我不知道该怎么解释,所以我会告诉你。

public class Note
{
    string CreatorID;
    string Title;
    string Text;
}

我有一个填充的笔记List<Note> noteListList<Note> noteList )。 有多个创作者,每个创作者都有多个注释。 我试图找出是否有一种使用LINQ查询按CreatorID将注释分组的方法,然后将它们分开并输出为注释List<List<Note>> creatorsNotesList<List<Note>> creatorsNotes )。 这样,我可以遍历creatorsNotes以获取创建者及其注释列表。

最简单的方法是使用ToLookup

var groups = noteList.ToLookup(n => n.CreatorID);

foreach(var group in groups)
{
    Console.WriteLine("Items with CreatorID {0}", group.Key);
    foreach(var item in group)
          Console.WriteLine("   Title: {0}", item.Title);
}

如果需要,您也可以使用GroupBy 请注意,这些不会直接创建List<List<Note>> 如果需要,您可以执行以下操作:

List<List<Note>> grouped = noteList.GroupBy(n => n.CreatorID)
                                   .Select(g => g.ToList()) 
                                   .ToList();

当然,让listList<Note>

var creatorNotes = list
    .GroupBy(note => note.CreatorID)
    .Select(g => new
    {
        g.CreatorID,
        Notes = g.ToList()
    })
    .ToList();

正如Reed所指出的,这是一个匿名类型的列表,该列表指示根目录中的分组的CreatorID以及与该CreatorID关联的Notes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM