【问题标题】:Display only unique values in dropdown在下拉列表中仅显示唯一值
【发布时间】:2022-11-13 23:58:48
【问题描述】:
 @if (items != null)
{
    <select required class="col-sm-10" bind="searchByLocation" @onchange="LocationOnChange">
        <option value="" disabled selected hidden>Search By Location</option>
        @foreach (var r in items)
        {
            <option value="@r.location">@r.location</option>
        }
    </select>
}

下面是我的课程和工作代码,在下拉列表中显示位置(但不是唯一值)。

public class DisplayItem
{     
    public string itemKey { get; set; }
    public string id { get; set; }
    public string location{ get; set; }       
} 

List<DisplayItem> items = new ();
private DisplayItem[] locationDropDown ;

protected override async Task OnInitializedAsync()
{
items = (await ItemService.GetItems())
    .GroupBy(x => x.ItemKey)
    .Select(x => new DisplayItem
    {
        ItemKey = x.Key,
        Id = x.FirstOrDefault(y => y.Key == "Id")?.Value,
        Location = x.FirstOrDefault(y => y.Key == "Location")?.Value,
    })
    .ToList();

// locationDropDown = items.Select(x => x.location).Distinct().ToArray(); 

}

下面通过从下拉列表中选择位置来帮助过滤记录。但是多次显示同一个国家。我只想在下拉列表中显示唯一值。谢谢你。

private DisplayItem[] result;
string searchByLocation;

 private async Task LocationOnChange(ChangeEventArgs args)
{
    searchByLocation = (string)args.Value;
    await LocationChanged();
}

private async Task LocationChanged()
{
    result= items.Where(part => part.location == searchByLocation).ToArray(); 
}

【问题讨论】:

  • 为什么 Distinct() 不适合你?为什么你注释掉这条线?

标签: c# dropdown distinct


【解决方案1】:

razor 文件中的 foreach 循环基于没有唯一位置的项目。因此,将循环更改为

@foreach (var l in items.Select(x => x.location).Distinct())
{
    <option value="@r.location">@l</option>
}

或者将循环基于唯一位置的集合而不是items

【讨论】:

  • 那是完美的。谢谢你。下拉列表中包含空白或空选项。关于如何排除它的任何建议。
【解决方案2】:

您可能需要将Distinct 添加到您的LocationChanged 方法中。像这样的东西:

private async Task LocationChanged()
{
    result= items.Where(part => part.location == searchByLocation).Distinct().ToArray(); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2019-10-19
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多