這種奇怪的問題,我想不出解決辦法。我正在使用 .net core 2.1 和最新版本的 EF。我有一個這樣的訂單視圖模型:public class OrdersFilterViewModel{ public int? AccountNumber { get; set; } [Display(Name = "Account Numbers:")] public IEnumerable<SelectListItem> AccountNumbers { get; set; }}如果我做一個通用的數據庫上下文,就沒有問題。但是,我在 SelectList 中得到了重復的帳號。所以,如果我嘗試做一個 do aSelect().Distinct()來消除重復項:[Authorize]public async Task<IActionResult> FilterOrders(int? account){ var accountContext = _context.Order .Where(m => m.UserID == userId) .Select(m => m.AccountNumber) .Distinct(); var vm = new OrdersFilterViewModel { ... AccountNumbers = new SelectList(await accountContext.ToListAsync(), "AccountNumber", "AccountNumber", account), }或者我試試這個:[Authorize]public async Task<IActionResult> FilterOrders(int? account){ var accountContext = _context.Order .Where(m => m.UserID == userId); var vm = new OrdersFilterViewModel { ... AccountNumbers = new SelectList(await accountContext.Select(m => m.AccountNumber).Distinct().ToListAsync(), "AccountNumber", "AccountNumber", account), }無論我嘗試什么,包括刪除 await 和做這樣的事情:AccountNumbers = new SelectList(accountContext, "AccountNumber", "AccountNumber", account).Distinct().ToList(),沒有錯誤,但它不斷將我的類型從更改[0] = {Microsoft.AspNetCore.Mvc.Rendering.SelectListItem}為Data = {System.Collections.ListDictionaryInternal}(我在調試時可以看到),因此在進入視圖時炸彈:GET https://localhost:44380/orders/filterorders?account=464402 500send @ jquery.js:9600ajax @ jquery.js:9206(anonymous) @ Orders?account=464402:546dispatch @ jquery.js:5183elemData.handle @ jquery.js:4991Orders?account=464402:563 Dynamic content load failed.但是,問題似乎與Distinct()電話無關,而是給了我不同的訂單 ID,而不是不同的帳號。問題似乎與Select()通話有關。有人知道我做錯了什么嗎?
2 回答

皈依舞
TA貢獻1851條經驗 獲得超3個贊
問題是,當您使用 select 時,您定義了您想要返回的內容
Select(m => m.AccountNumber)
這將僅返回 AccountNumber 列的列表。

心有法竹
TA貢獻1866條經驗 獲得超5個贊
本著讓我的項目繼續前進的精神......
首先,我刪除了對 and 的任何引用,Select(m => m.AccountNumber)
并Distinct()
改為執行以下操作:
AccountNumbers = new SelectList(await accountContext.ToListAsync(), "AccountNumber", "AccountNumber", magic) .GroupBy(x => x.Text).Select(x => x.First()).ToList(),
我從這里得到了這個想法??磥?a >您可以使用 Distinct() 做更多復雜的事情,我稍后可能會嘗試。無論如何,我肯定對其他答案/批評持開放態度,并添加了一個TODO
以稍后重新訪問這個......
- 2 回答
- 0 關注
- 138 瀏覽
添加回答
舉報
0/150
提交
取消