背景: ビュー モデルに MultiSelectList を含む ASP.NET MVC ビュー ページがあります。その MultiSelectList オブジェクトからの SelectedValues のリストをラベルに入力したいと考えています。リストは、IDName のタイプで MultiSelectList 内に格納されます。
public class IDName {
public int ID {get; set;}
public string Name {get; set;}
}
したがって、MultiSelectList.Items は IDName のリストを含む IEnumerable です。このリストに対して foreach を実行し、.Name を取得して各エントリの名前を取得できます。しかし、ID が MultiSelectList.SelectedItems にある場合にのみこれを行いたいと思います。これは string[] のように見え、次のようになります。
["1", "3", "4"]
したがって、IDName.ID が SelectedItems リストにあるときに IDName.Name を取得したいだけです。
私はMVCとC#の両方にかなり慣れていないので、それを行う最善の方法がわかりません。助言がありますか?
更新 #2:
OK、私は密集していました。これは機能します:
list.Items
.Cast<IDName>()
.Where(x => list.SelectedValues.Cast<string>().Contains(x.ID.ToString()))
SelectedValues は、実際には string[] を含む IEnumerable です。