ここにある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 keys = 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});
私が欲しいものではありません。
Gから何かを取得しようとすると、エラーメッセージSystem.Linq.IGropuing<string, UserQuery.KeywordInstance> does not have a definition for [whatever I tried]
で失敗します。
私はここで何が間違っているのですか?
私はあなたがあなたの解決策に近いと思います。
var keywords = allWords
.GroupBy(w => w.keyword)
.Select(g => new
{
keyword = g.Key,
RecordIDs = g.Select(c => c.ID)
});
必要なレコードをSelect
するだけです。
Keyword-columnと[〜#〜] id [〜#〜]-columnが表示される理由は、その一部であるためです。 g
の