将项添加到List <string>属性</string>

时间:2014-08-17 16:36:05

标签: c# list class object add

如何在列表中添加新项目?

这是我的对象列表或人们称之为

的任何内容
class WordListsAll
{
    public int idAll { get; set; }
    public string wordEnAll { get; set; }
    public string translationAll { get; set; }
    public List<string> videosOfSelectedWord { get; set; }
}

我想要的只是向videosOfSelectedWord列表属性添加一个新项目。

这样做的最佳方式是什么?

foreach (var item in q)
{
      count++;
      oWordListsAll.Add(new WordListsAll
      {
           idAll = count,
           wordEnAll = item.Element("Word").Value,
           translationAll = item.Element("Translation").Value,
           ///////////////here is my goal///////////////////
           videosOfSelectedWord.Add(myCustomString)
       });
}

有时候我想回来并为之前创建的实例添加一个新的myCustomString。 Imagin有一个单词“hello”,视频名称为“Dexter”,并且还有一个单词“hello”,但这次的视频名称为“Breaking Bad”。

如何将这些视频名称添加到videosOfSelectedWord的属性列表?

1 个答案:

答案 0 :(得分:6)

您必须自己分配列表 - 您可以使用collection initializer

执行此操作
foreach (var item in q)
{
    count++;
    oWordListsAll.Add(new WordListsAll
    {
        idAll = count,
        wordEnAll = item.Element("Word").Value,
        translationAll = item.Element("Translation").Value,
        videosOfSelectedWord = new List<string> { myCustomString }
    });
}

要添加到现有项目,可能是这样的(从您的问题中不完全清楚,您可能应该阅读一下):

//should really use a dictionary, this is just to show a simple example
var alreadyExists = videosOfSelectedWord.FirstOrDefault(x => x.wordEnAll == item);
if(alreadyExists !=null)
{
    alreadyExists.videosOfSelectedWord.Add(myCustomString);
    alreadyExists.idAll++;
}
else
{
    //new item
}

(顺便说一下,你的名字应该遵循命名约定,所以属性应该大写)