運行此代碼時:
public async Task<IActionResult> AddMessage()
{
int distid = ViewBag.DISTRIBUTORID;
ViewBag.PageName = "Send Message";
int id = Convert.ToByte(ViewBag.ID);
ViewBag.UserId = id;
var messages = await _companyContext.MESAJLAR.Where(p => p.SENDERID == id || p.SENTID == id).OrderBy(p => p.DATE).GroupBy(p => p.SPECIALID).Select(p => p.Last()).ToListAsync();
var ids1 = messages.Select(p => p.SENDERID).ToArray();
var ids2 = messages.Select(p => p.SENTID ).ToArray();
var users= await _userDatabaseContext.user.Where(p => p.DISTID == distid && p.ID != id && !ids1.Contains(p.ID) && !ids2.Contains(p.ID)).ToListAsync();
return View(new AddMessageViewModel
{
USERS= users
});
}
我收到以下錯誤:
執行“Last”操作的查詢必須具有確定的排序順序。在呼叫“Last”之前重寫查詢以對序列應用“OrderBy”操作。
我在開頭的那一行得到它var messages = ...
uj5u.com熱心網友回復:
您的查詢的問題是,您嘗試在.Last()沒有先訂購資料的情況下進行選擇。現在您正在訂購資料,然后將其分組,然后您嘗試選擇“Last()”。您必須訂購分組資料才能使用“.Last()”。
var messages = await _companyContext.MESAJLAR.Where(p => p.SENDERID == id || p.SENTID == id).OrderBy(p => p.DATE).GroupBy(p => p.SPECIALID).OrderBy(p => p.XXXXX).Select(p => p.Last()).ToListAsync();
而且您的第一個訂單可能不再需要了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516913.html
