1
我想返回我的「類別」表中的所有值,並將其加入我的「類別選擇」表中以顯示所有類別以及指定用戶是否選擇了它們。 一個併發症(我不知道如何處理在LINQ中)是用戶可能已經改變了他對某一特定類別的選擇/取消選擇隨着時間的推移......每一個改變都會記錄在「CategorySelections」表中日期戳。 我在最後的選擇狀態之後。LINQ Select Row with Max date per group
下面的SQL查詢做什麼,我想:
SELECT cs.UserId, c.CategoryId, m.MaxDate, cs.IsSelected
FROM [myDB].[dbo].[Categories] c
LEFT JOIN [myDB].[dbo].[CategorySelections] cs
ON c.CategoryID = cs.CategoryID AND cs.UserID = 7
INNER JOIN
(
SELECT UserId, CategoryId, Max(CreatedOn) as MaxDate
FROM [myDB].[dbo].[CategorySelections]
GROUP BY UserId, CategoryId
) m
ON cs.UserID = m.UserID AND cs.CategoryID = m.CategoryID AND cs.CreatedOn = m.MaxDate
ORDER BY cs.CategoryI
我需要一些幫助,讓在LINQ這件事。 下面是我的嘗試,它返回所有的選擇,而不僅僅是最後一個類別。
var query = from c in db.Category
join cs in db.CategorySelection.Where(x => x.UserID == WebSecurity.CurrentUserId)
on c.CategoryID equals cs.CategoryID into JoinedCategory
from cs in JoinedCategory.DefaultIfEmpty()
select new Selection() { CategoryID = c.CategoryID, CategoryName = c.CategoryName ,IsSelected = cs != null ? cs.IsSelected : false }
我在MVC工作; 「新選擇()」是指我的模型
我想我補充一點,之前的「選擇」。它說「名稱CategorySelections」在當前上下文中不存在。然後我將它改爲「cs」。但它說「不包含Max的定義」 – Basquiat
我想你可能意思是「JoindedCategory」而不是「CategorySelection」?這樣做不會產生錯誤,但也不會返回任何結果。 – Basquiat
我的意思是'db.CategorySelection' – opewix