如何在LINQGroupBy中获取分组值列表?

如何在LINQGroupBy中获取分组值列表?,linq,group-by,Linq,Group By,Linq新手在这里,与我的第一组问题进行斗争 我有一个KeywordInstance类型的对象列表,这些对象表示一个关键字,以及应用该关键字的数据库记录的ID Keyword RecordID macrophages 1 macrophages 2 cell cycle 3 map kinase 2 cell cycle 1 我想要的是所有关键字的集合,以及应用每个关键字的RecordID列表 Keyword RecordIDs macrophages 1

Linq新手在这里,与我的第一组问题进行斗争

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

Keyword      RecordID
macrophages  1
macrophages  2
cell cycle   3 
map kinase   2
cell cycle   1
我想要的是所有关键字的集合,以及应用每个关键字的RecordID列表

Keyword     RecordIDs 
macrophages 1, 2
cell cycle  1, 3
map kinase  2
我尝试使用Linq将其放入一个新对象中。我只得到了不同的关键字

var关键字=所有单词 .GroupBy(w=>w.keyword) .Select(g=>new{keyword=g.Key})

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

var keywords = allWords
    .GroupBy(w => w.keyword)
    .Select(g => new {keyword = g.Key, RecordIDs = g});
这不是我想要的

任何试图从g中获取某些内容的尝试都会失败,并显示错误消息
System.Linq.IGropuing没有[我尝试的任何内容]
的定义


我做错了什么

我想你已经接近你的解决方案了

var keywords = allWords
    .GroupBy(w => w.keyword)
    .Select(g => new 
           { 
              keyword = g.Key, 
              RecordIDs = g.Select(c => c.ID)
           });
只需选择所需的记录。

你看到关键字列和ID列的原因是因为它是
g

的一部分,我可以想象这个问题是重复的,但我一定搜索了错误的关键字,至少我找到的搜索结果对我没有帮助。我看不到问题——你有一个键,以及属于该键的所有记录?你希望
g
的记录是什么样子的:)?@JensKloster我不在乎g的记录是什么样子的。我需要的是一个数据结构,它将整数列表{3,169,2179,2188,2334,2389,2496}映射到关键的“因子受体”。我想我会使用groupby,显然我用错了,从中得到了g,而不是我需要的。所以问题是,我该如何正确使用它呢?谢谢,我试着用RecordIDs=g.Values.ID这样的东西来做,但从来没有想过在g上使用嵌套查询。