【问题标题】:Distinct Column in SelectList for dropdown listSelectList 中的不同列用于下拉列表
【发布时间】:2021-02-24 02:56:21
【问题描述】:

我只针对一列从表中检索不同的值。当我在控制器中调试 ViewData 时,它已经完美地检索了值,但在我看来,它说没有引用对象。谁能帮帮我。

我认为在应用 distinct 后 dataValueField 和 dataTextField 不再命名为“TeamName”。如何命名我选择的选定列,以便在 SelectList 下面可以工作。谢谢

控制器

ViewData["TeamNames"] = new SelectList(_context.ActivityMaps.Select(s => s.TeamName).Distinct(), "TeamName", "TeamName", model.TeamName);

查看

<select asp-for="TeamName" class="form-control" asp-items="ViewBag.TeamNames"></select>

【问题讨论】:

    标签: entity-framework linq asp.net-core


    【解决方案1】:

    假设TeamName是字符串类型。

    _context.ActivityMaps.Select(s => s.TeamName).Distinct().ToList()
    

    所以上面的查询只是返回一个字符串列表,它没有TeamName属性。

    只需删除 dataValueField 和 dataTextField。

    ViewData["TeamNames"] = new SelectList(_context.ActivityMaps.Select(s => s.TeamName).Distinct().ToList(), model.TeamName);
    

    更新:

    var names = _db.ActivityMaps.Select(s => s.TeamName).Distinct().Select(n => new { TeamName = n }).ToList();
    
    ViewData["TeamNames"] = new SelectList(names, "TeamName", "TeamName", model.TeamName);
    

    【讨论】:

    • 是的,它有效,但你能告诉我如何命名一个属性吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    相关资源
    最近更新 更多