1対多関係のあるDBテーブル[Table1]があります。
この関連表[Table2]は文字列であるタイプフィールドを持っています。 linq-to-SQLグループを結合テーブルの文字列のリストで表示
Table 1 Table 2 Field | Type Field | Type ------|----- ---------|----- Id | int Id | int Table1Id | int Type | string私は種類の組み合わせごとに、 の発生頻度の要約を作成しようとしていますし、メモリにすべてを持って来るには余りにも遅いできるだけDB上のように多くの作業を行うにしようとしています。
私のコードは動作していますが、私にとっては繰り返しのようです。私はDB上のグループ化を行い、また、私のコードでselect文の数を減らすことができるように
items
.Where(x => x.Table2s.Count > 1)
.Select(x => new
{
Type = x.Table2s.Select(y => y.Type)
})
.ToList() // into memory as string.join has no translation into sql
.Select(x => new
{
Type = string.Join(",", x.Type) // no sql translation
})
.GroupBy(x => x.Type) // can't work on IEnumerable[string]
.Select(x => new Result()
{
Type = x.Key,
Count = x.Count()
})
.OrderByDescending(x => x.Count)
.ToList();
は、文字列のリストによってグループ化する方法はあります
を(あなたが孤児表2のエントリを持っている可能性がある場合は参加半残ってやって)それ?同じフィールド定義を持つタイプの重複を検出しようとしていますか? –
@ JeroenvanLangen申し訳ありませんが、table1のレコードが表2の各組み合わせにリンクされた回数を表示しようとしています。 タイプa、b、c = 5 |タイプa、c = 10 |型d、f = 1 –
フラグ付き列挙型の型要素を作るためにint型フィールドを 'Table 1'に追加することができます。次に、それらの合計でグループ化することができます。 –