ASP.NET 通过 LINQ 查询的核心 MVC 组
ASP.NET Core MVC Group by query with LINQ
我正在尝试从我的 table 之一查询国家/地区列并尝试将它们分组,以便一个国家/地区名称只出现一次。
控制器代码是
ViewBag.Countries = (from pT in _context.InfoProducts
group pT by new { pT.Country } into g
select new
{
Country = g.Key.Country
}).ToList();
在我看来,我正试图在这样的下拉菜单中显示这个国家/地区列表
<div class=" form-group">
@Html.Label("Country")
<div class="col-md-12 ">
@Html.DropDownList("Country", new SelectList(ViewBag.Countries, "Country"), "Select Country", new { @class = "col-form-label col-md-12 label-align" })
</div>
</div>
我面临的问题是,虽然它返回了预期的国家名称,但结果生成的是键值对,类似于
{Country = USA}
{Country = Canada}
下面给出了从检查元素复制生成的 HTML
<select class="col-form-label col-md-12 label-align" id="Country" name="Country">
<option value="">Select Country</option>
<option>{ Country = USA}</option>
<option>{ Country = Canada}</option>
</select>
我怎样才能在下拉列表中只得到国家名称而不是我目前得到的结果。
而不是使用 group by,听起来 distinct 更合适:
_context.InfoProducts.Select(x => x.Country).Distinct().ToList();
这会返回一个要使用的字符串列表,不会给您带来当前遇到的 key-value 对问题。
还有一件事,当您使用 new SelectList(ViewBag.Countries, "Country")
时,SelectList
的构造函数的重载将尝试将 Country
的值设置为 selected 项,但这在您的列表中不存在,因此 Select Country
将始终显示为 selected。如果你想 select 一个实际的国家,那么它必须看起来像:
new SelectList(ViewBag.Countries, "Canada")
从当前产品的数据中获取 Canada
的位置。
我正在尝试从我的 table 之一查询国家/地区列并尝试将它们分组,以便一个国家/地区名称只出现一次。
控制器代码是
ViewBag.Countries = (from pT in _context.InfoProducts
group pT by new { pT.Country } into g
select new
{
Country = g.Key.Country
}).ToList();
在我看来,我正试图在这样的下拉菜单中显示这个国家/地区列表
<div class=" form-group">
@Html.Label("Country")
<div class="col-md-12 ">
@Html.DropDownList("Country", new SelectList(ViewBag.Countries, "Country"), "Select Country", new { @class = "col-form-label col-md-12 label-align" })
</div>
</div>
我面临的问题是,虽然它返回了预期的国家名称,但结果生成的是键值对,类似于
{Country = USA}
{Country = Canada}
下面给出了从检查元素复制生成的 HTML
<select class="col-form-label col-md-12 label-align" id="Country" name="Country">
<option value="">Select Country</option>
<option>{ Country = USA}</option>
<option>{ Country = Canada}</option>
</select>
我怎样才能在下拉列表中只得到国家名称而不是我目前得到的结果。
而不是使用 group by,听起来 distinct 更合适:
_context.InfoProducts.Select(x => x.Country).Distinct().ToList();
这会返回一个要使用的字符串列表,不会给您带来当前遇到的 key-value 对问题。
还有一件事,当您使用 new SelectList(ViewBag.Countries, "Country")
时,SelectList
的构造函数的重载将尝试将 Country
的值设置为 selected 项,但这在您的列表中不存在,因此 Select Country
将始终显示为 selected。如果你想 select 一个实际的国家,那么它必须看起来像:
new SelectList(ViewBag.Countries, "Canada")
从当前产品的数据中获取 Canada
的位置。