如何将字符串添加到IEnumerable - C#

时间:2012-10-11 05:42:05

标签: c# asp.net-mvc-3

我有以下课程:

class A
{
  public IEnumerable Song { get; set; }
}

然后在索引中我有这样的代码:

public ActionResult 
{
    a.Song = (Path.Combine(Server.MapPath("~/Content/themes/base/songs"),
                           file)).ToList();
    return View();
}

此代码无法正常工作如何为IEnumerable Song添加字符串路径?或者有更好的方法或其他方式来做这个而不是使用IEnumerable?

- 我不明白-ve评分?这是一个合法的问题? 正如我上面所描述的那样,我试图在a.Song下收集4或5个url作为字符串。 上面的代码返回字符,如134 char字符串数组。这不是我想要得到的。我希望这个解释有所帮助,但我仍然不理解 - 评级。那些赞成评级的人可以解释他们为什么这样做吗?

2 个答案:

答案 0 :(得分:1)

IEnumerable是StateMachine的序列生成器。您无法通过这种方式为IEnumerable添加项目。但由于大多数集合都是从它派生的,因此您可以为其分配集合。

var list = new List<string>();
list.Add(Path.Combine(Server.MapPath("~/Content/themes/base/songs"),
                           file));
a.Song = list;

这会奏效。

此处创建一个List并添加路径。

答案 1 :(得分:0)

我想你想:

class A
{
     List<string> songs=new List<string>();
     public IEnumerable<string> Songs { get{ return songs;}}
     public void Add(string song)
     {
         songs.Add(song);
     }
}

然后你使用:

var a = new A();

a.Add(...);

这允许您公开一个只读集合,并以明确的方式添加歌曲。