我正在使用 Entity Framework 6 和 SQL Server 資料庫開發 ASP.NET MVC 應用程式。
我試圖通過添加一個SortingCode我想根據當前分配一個值來混洗查詢的結果SessionId,這樣每次回傳的行都會被混洗而不影響分頁。SortingCode在這個嘗試中是一個字串,但它可以是任何型別,只要它允許我獲得混洗的結果。我有這樣的事情:
var sessionId = Session.SessionID.GetHashCode();
var rnd = new Random(sessionId);
var query = (from l in _context.Adverts
select new AdvertSummary
{
Id = l.Id,
Title = l.Title,
Description = l.Description,
SortingCode = l.Title.OrderBy(x => rnd.Next()).ToString(),
});
IQueryable然后在我的代碼中稍后將結果轉換為串列:
var pagedResults = query.Skip(skip).Take(pageSize).ToList();
上述對Random類的嘗試不起作用,并導致錯誤
DbExpressionBinding 需要具有集合 ResultType 的輸入運算式
有什么我可以做的事情來獲得洗牌的結果嗎?
uj5u.com熱心網友回復:
我建議SqlFunctions.Checksum用于此類任務。SortingCode將幾乎接近種子隨機。
var sessionId = Session.SessionID;
var query =
from l in _context.Adverts
select new AdvertSummary
{
Id = l.Id,
Title = l.Title,
Description = l.Description,
SortingCode = SqlFunctions.Checksum(sessionId, l.Title)
};
var pagedResults = query
.OrderBy(x => x.SortingCode)
.ThenBy(x => x.Id)
.Skip(skip)
.Take(pageSize)
.ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/350052.html
標籤:asp.net-mvc 林克 分页 洗牌
