我想爲下面的查詢編寫等價的linq代碼。我在做構建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;
但我得到以下編譯錯誤,我不知道如何解決。任何想法
連接子句中的一個表達式的類型不正確。在「加入」的調用中,類型推斷失敗。
錯誤7'System.Linq.IGrouping'沒有包含'Name'的定義,也沒有找到接受類型'System.Linq.IGrouping'的第一個參數的擴展方法'Name'(你是否缺少一個使用指令或程序集引用?)
switch .Select()和.GroupBy()部件 – Alex