C# MVC如何预填充IEnumerable<;字符串>;在尝试使用LINQ结果填充之前

C# MVC如何预填充IEnumerable<;字符串>;在尝试使用LINQ结果填充之前,c#,asp.net-mvc,linq,asp.net-mvc-4,razor,C#,Asp.net Mvc,Linq,Asp.net Mvc 4,Razor,我有一个很棘手的问题, 基本上我有一个可以有3个字符串选项的类,这里是基本类 public class Person { public int Id {get;set;} public IEnumerable<string> Options {get;set;} } 公共类人物 { 公共int Id{get;set;} 公共IEnumerable选项{get;set;} } 现在基本上,当调用它时,我想用3个字符串对象填充选项,所以在我的razor视图中,我可以使

我有一个很棘手的问题, 基本上我有一个可以有3个字符串选项的类,这里是基本类

public class Person
{
    public int Id {get;set;}
    public IEnumerable<string> Options {get;set;}
}
公共类人物
{
公共int Id{get;set;}
公共IEnumerable选项{get;set;}
}
现在基本上,当调用它时,我想用3个字符串对象填充选项,所以在我的razor视图中,我可以使用foreach并绘制3个字符串输入框

但是由于这些选项不是必需的,当用户返回到这个页面时,我将使用LINQ查询来提取他们选择的选项

假设他们放了两个选项,在我的LINQ查询运行之后,它将返回一个大小为2的IEnumerable,如果我保持这样,当我想显示3时,视图将只显示2个输入框,但是使用IEnumerable,我无法插入或添加


实现这一点的最佳方法是什么?

您必须
克隆该列表,然后必须执行操作。

也许可以实例化可枚举到列表的选项,然后用选项填充,这可以在构造函数中完成

public void Person()
{
   var optionsList = new List<string>();\
//Add your options

   Options = optionsList;
}
public void Person()
{
var optionsList=新列表()\
//添加您的选项
选项=选项列表;
}

您可以为用户选择的选项创建一个新的
列表

public void Repopulate()
{
     var allOptions = Options;
     // Linq Query..
     Options = allOptions;
}

然后让视图始终显示
选项

创建一个新的可枚举项:
选项=Options.Concat(您的可枚举项)LINQ查询将始终返回新的IEnumerable,而不是修改现有IEnumerable。问题在哪里?