如何获取linq groupby中的分组值列表?

Rum*_* P. 8 linq group-by

Linq新手在这里,通过查询与我的第一组挣扎.

我有一个KeywordInstance类型的对象列表,它表示一个关键字,以及应用该关键字的数据库记录的ID.

Keyword      RecordID
macrophages  1
macrophages  2
cell cycle   3 
map kinase   2
cell cycle   1
Run Code Online (Sandbox Code Playgroud)

我想要的是所有关键字的集合,以及应用每个关键字的RecordID列表

Keyword     RecordIDs 
macrophages 1, 2
cell cycle  1, 3
map kinase  2
Run Code Online (Sandbox Code Playgroud)

我尝试使用Linq将其转换为新对象.我只设法获得了不同的关键字.

var keywords = allWords .GroupBy(w => w.keyword).Select(g => new {keyword = g.Key});

问题是我似乎无法以任何方式获得g的值.g是IGrouping类型,根据文档,它只有属性Key,但甚至没有属性Value.我在互联网上看到的所有关于groupby的例子只是告诉我选择g本身,但结果是

var keywords = allWords
    .GroupBy(w => w.keyword)
    .Select(g => new {keyword = g.Key, RecordIDs = g});
Run Code Online (Sandbox Code Playgroud)

不是我想要的.

结果截图

任何尝试从g获取的东西都会失败并显示错误消息System.Linq.IGropuing<string, UserQuery.KeywordInstance> does not have a definition for [whatever I tried].

我在这做错了什么?

Jen*_*ter 22

我认为你很接近你的解决方案.

var keywords = allWords
    .GroupBy(w => w.keyword)
    .Select(g => new 
           { 
              keyword = g.Key, 
              RecordIDs = g.Select(c => c.ID)
           });
Run Code Online (Sandbox Code Playgroud)

只是Select你需要的记录.
你看到Keyword- column和ID- column的原因是它的一部分g