亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Distinct() Select() 改變SelectList .net Core中的類型

Distinct() Select() 改變SelectList .net Core中的類型

C#
MMMHUHU 2022-11-21 21:47:20
這種奇怪的問題,我想不出解決辦法。我正在使用 .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 列的列表。


查看完整回答
反對 回復 2022-11-21
?
心有法竹

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以稍后重新訪問這個......


查看完整回答
反對 回復 2022-11-21
  • 2 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號