Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 下拉列表的SelectList中的不同列_Entity Framework_Linq_Asp.net Core - Fatal编程技术网

Entity framework 下拉列表的SelectList中的不同列

Entity framework 下拉列表的SelectList中的不同列,entity-framework,linq,asp.net-core,Entity Framework,Linq,Asp.net Core,我只针对一列从表中检索不同的值。当我在控制器中调试ViewData时,它完美地检索到了值,但在我的视图中,它表示对象未被引用。谁能帮我一下吗 我认为在应用distinct后,dataValueField和dataTextField不再命名为“TeamName”。如何命名我选择的选定列,以便下面的SelectList可以工作。谢谢 控制器 ViewData["TeamNames"] = new SelectList(_context.ActivityMaps.Select(s

我只针对一列从表中检索不同的值。当我在控制器中调试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>

假设
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);

是的,它可以工作,但你能告诉我如何命名一个属性吗?