【发布时间】:2017-11-27 16:37:02
【问题描述】:
我有一个引用类型的对象列表,我将其传递给视图并在网格中显示。网格上方有许多用于过滤的下拉列表。我想使用基于网格数据的有效选项的不同列表填充dropdown 列表。我正在查看的是“创建者”。
public IEnumerable<SelectListItem> GetCreatedBy(IEnumerable<Quote> quotes)
{
var x = quotes.GroupBy(q => new {
ListValue = q.CreatedBy.samAccountName,
ListText = q.CreatedBy.DisplayName})
.Select(group => new SelectListItem {
Value = group.ListValue,
Text = group.ListText });
return x;
}
我得到的错误是:
'IGrouping' 不包含 'ListValue' 的定义,并且没有 扩展方法“ListValue”接受类型的第一个参数 'IGrouping' 可以找到(您是否缺少 using 指令或 汇编参考?)
“报价”有一个“用户”对象作为“创建者”我想要一个 DropDownList 填充不同的用户 samAccountName 和 DisplayName,而无需重新查询以获取此列表。
我用.GroupBy() 尝试了.Distinct() 和上面代码的不同版本。
我是 MVC 的新手,对 lambda 表达式真的很陌生。任何帮助将不胜感激。
【问题讨论】:
-
您需要指定要分组的列。 GroupBy 语法请参考this SO。
-
谢谢西瓦。我看到了那个例子,我认为它与我正在尝试做的不同。我试过 'var x = quotes.GroupBy(q => q.CreatedBy.samAccountName, q => q.CreatedBy.DisplayName, (key, g) => new SelectListItem { Value = key, Text = g.First()。 ToString() });'。这给了我所有用户的列表,但那里有重复。
标签: c# asp.net linq model-view-controller