C# 从IEnumerable中选择不同的ListItem
我有一个quote类型的对象列表,我将其传递到视图并显示在网格中。网格上方有许多下拉列表用于筛选。我想根据网格的数据,用有效选项的不同列表填充C# 从IEnumerable中选择不同的ListItem,c#,asp.net,linq,model-view-controller,C#,Asp.net,Linq,Model View Controller,我有一个quote类型的对象列表,我将其传递到视图并显示在网格中。网格上方有许多下拉列表用于筛选。我想根据网格的数据,用有效选项的不同列表填充下拉列表。我现在看到的是“创建人” public IEnumerable<SelectListItem> GetCreatedBy(IEnumerable<Quote> quotes) { var x = quotes.GroupBy(q => new { ListValue = q.Cre
下拉列表。我现在看到的是“创建人”
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;
}
public IEnumerable GetCreatedBy(IEnumerable引号)
{
var x=quotes.GroupBy(q=>new{
ListValue=q.CreatedBy.samAccountName,
ListText=q.CreatedBy.DisplayName})
.Select(组=>new SelectListItem{
Value=group.ListValue,
Text=group.ListText});
返回x;
}
我得到的错误是:
“iGroup”不包含“ListValue”的定义,也不包含
扩展方法“ListValue”接受类型为的第一个参数
找不到“iGroup”(您是否缺少using指令或
装配参考?)
“Quote”有一个“User”对象作为“Created By”,我想要一个DropDownList,其中填充了不同的用户samAccountName和DisplayName,无需重新查询即可获得此列表
我用.GroupBy()
尝试了.Distinct()
和上述代码的不同版本
我不熟悉MVC
,也不熟悉lambda表达式。非常感谢您的帮助。您可以使用GroupBy获取不同的值,然后使用组中的第一个实例获取您的值
var x = quotes
.GroupBy(q =>
new
{
q.CreatedBy.samAccountName,
q.CreatedBy.DisplayName,
})
.Select(q =>
new SelectListItem
{
Value = q.First().CreatedBy.samAccountName,
Text = q.First().CreatedBy.DisplayName,
});
您可以使用GroupBy来获取不同的值,然后使用组中的第一个实例来获取您的值
var x = quotes
.GroupBy(q =>
new
{
q.CreatedBy.samAccountName,
q.CreatedBy.DisplayName,
})
.Select(q =>
new SelectListItem
{
Value = q.First().CreatedBy.samAccountName,
Text = q.First().CreatedBy.DisplayName,
});
您需要指定要分组的列。请参考GroupBy语法。谢谢Siva。我看到了这个例子,我认为这和我想做的不同。我尝试了“var x=quotes.GroupBy(q=>q.CreatedBy.samAccountName,q=>q.CreatedBy.DisplayName,(key,g)=>new-SelectListItem{Value=key,Text=g.First().ToString()};”。这给了我一个所有用户的列表,但其中有重复的用户。您需要指定一个要分组的列。请参考GroupBy语法。谢谢Siva。我看到了这个例子,我认为这和我想做的不同。我尝试了“var x=quotes.GroupBy(q=>q.CreatedBy.samAccountName,q=>q.CreatedBy.DisplayName,(key,g)=>new-SelectListItem{Value=key,Text=g.First().ToString()};”。这给了我一个所有用户的列表,但是其中有重复的用户。