次のクエリに相当するlinqコードを書き込もうとしています。
SELECT A.*
FROM
(
SELECT * FROM TableA
WHERE id = 100
) a
JOIN
(
SELECT Name, MAX(AnotherId) AnotherId
FROM TableA
WHERE id = 100
GROUP BY Name
) b
on a.Name = b.Name and a.AnotherId = b.AnotherId
これはlinqです
var Collection = from R in DbContext.TableA
join G in (DbContext.TableA.Where(r => r.Id == 100).GroupBy(r => new { r.Name, r.AnotherId } ).Select(g => new { Name = g.Name , AnotherId = g.Max(o => o.AnotherId) }))
on new { R.Name, R.AnotherId } equals new { G.Name, G.AnotherId }
where R.Id == 100
select R;
しかし、修正方法がわからない次のコンパイルエラーが発生します。何かご意見は
join句の式の1つの型が正しくありません。'Join'の呼び出しで型推論が失敗しました。
エラー7「System.Linq.IGrouping」に「Name」の定義が含まれておらず、「System.Linq.IGrouping」タイプの最初の引数を受け入れる拡張メソッド「Name」が見つかりませんでした(usingディレクティブまたはアセンブリリファレンス?)