删除下拉列表中的重复项,组项

时间:2018-02-28 20:44:51

标签: .net linq razor .net-core

在我的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>

1 个答案:

答案 0 :(得分:0)

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

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