【问题标题】:Remove duplicates, group items for dropdown list删除重复项,为下拉列表分组
【发布时间】:2018-02-28 20:44:50
【问题描述】:

在我的 MVC cshtml 页面中,我有一组通过 Model 传入的记录。我想在一列中获取值并在下拉/选择中显示唯一值。我收到一个错误:

Unable to cast object of type 'Grouping System.String,VrsDataModel.Data.AuditItem]' to type 'VrsDataModel.Data.AuditItem'...

我的代码:

<select class="form-control" id="userSearch">
    <option></option>
    @foreach (AuditItem ai in Model.GroupBy(ai => ai.UserLogin))
    {
        <option value="@ai.UserLogin.ToName()">@ai.UserLogin.ToName()</option>
    }
</select>

【问题讨论】:

  • 想通了。我的模型包含一个列表,必须获取每个组中的第一项? Model.GroupBy(m => m.UserLogin.ToName()).Select(g => g.First()))

标签: .net linq razor .net-core


【解决方案1】:

错误消息告诉您“ai”变量不是“AuditItem”类型。查看 GroupBy 方法的定义(我假设这是“Linq”方法)。它返回类型“IEnumerable&lt;IGrouping&lt;TKey, TElement&gt;&gt;”,因此“ai”将是“IGrouping&lt;TKey, TElement&gt;”,其中 TKey 将是“UserLogin”属性的任何类型,而 TElement 是“Model”的任何类型。可以使用“ai.Key”获取分组值,可以通过迭代“ai”的内容来枚举分组项。

如果您只想要不同的值,请尝试“Model.Select(x=&gt;x.UserLogin.ToName()).Distinct()”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2019-01-02
    • 1970-01-01
    • 2018-10-26
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多