Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IEnumerable和字符串数组-查找匹配值_C#_Asp.net Mvc_Viewmodel_Ienumerable - Fatal编程技术网

C# IEnumerable和字符串数组-查找匹配值

C# IEnumerable和字符串数组-查找匹配值,c#,asp.net-mvc,viewmodel,ienumerable,C#,Asp.net Mvc,Viewmodel,Ienumerable,背景:我有一个ASP.NET MVC视图页面,视图模型中有一个MultiSelectList。我想用MultiSelectList对象中的SelectedValue列表填充标签。该列表以IDName类型存储在MultiSelect列表中: public class IDName { public int ID {get; set;} public string Name {get; set;} } 所以MultiSelectList.Items是一个IEnumerable,包含

背景:我有一个ASP.NET MVC视图页面,视图模型中有一个MultiSelectList。我想用MultiSelectList对象中的SelectedValue列表填充标签。该列表以IDName类型存储在MultiSelect列表中:

public class IDName {
    public int ID {get; set;}
    public string Name {get; set;}
}
所以MultiSelectList.Items是一个IEnumerable,包含一个IDName的列表。我可以在这个列表上做一个foreach,然后抓取.Name来获取每个条目的名称。但是,我只想在ID位于MultiSelectList.SelectedItems中时执行此操作,它看起来是字符串[],如下所示:

["1", "3", "4"]
因此,当IDName.ID位于SelectedItems列表中时,我只想获取IDName.Name

我对MVC和C都很陌生,所以我不确定最好的方法是什么。有什么建议吗

更新#2:

好吧,我当时很紧张。这项工作:

list.Items
  .Cast<IDName>()
  .Where(x => list.SelectedValues.Cast<string>().Contains(x.ID.ToString()))
list.Items
.Cast()
.Where(x=>list.SelectedValues.Cast().Contains(x.ID.ToString())
SelectedValues实际上是一个包含字符串[]的IEnumerable。

请尝试以下操作

var selected = MultiSelectList.Items
  .Cast<IDName>()
  .Where(x => MultiSelectList.SelectedItems.Contains(x.Name));
var selected=MultiSelectList.Items
.Cast()
。其中(x=>MultiSelectList.SelectedItems.Contains(x.Name));

这将处理MultiSelectList.items集合中的所有项。然后,它将把它们全部强制转换为强类型IDName实例。where子句将仅将集合筛选到名称字段与SelectedItems数组中的条目匹配的项目。

您可以使用LINQ根据
ID
筛选
列表

list.Where(item => ids.Contains(item.Id.ToString())).Select(item => item.Name)

非常接近!查看我的工作解决方案更新(这主要是不同的,因为我在我的第一篇文章中得到了一个细节错误)。非常感谢。