想要使用一种方法从foreach返回一个列表并返回所有项目,但我得到:(收集)

时间:2016-01-12 17:34:04

标签: c# error-handling

所以基本上当按钮上发生click事件时会触发该方法,以检查字符串是否匹配:

id

,方法的代码是:

        lbPlaylist.Items.Add(o.GetFragment(tbTitle.Text));
    }

问题是我真的将对象或对象集合返回到列表框,我想只返回添加的字符串名称。我怎样才能到达他们?

2 个答案:

答案 0 :(得分:1)

如果您只想在字符串列表中返回对象名称,请尝试使用

public List<string> GetFragment(String p)
{
    List<SoundFragment> list1 = new List<SoundFragment>();
    List<string> result = new List<string>();

    //make a list and store every string
    foreach(SoundFragment i in list1)
    {
        if (i.Title.Contains(p))
        {
            result.Add(i.Title);
        } 
    }
    //return all the objects from the new list that stores all the string contained in the fragments list
    return result ;
}

答案 1 :(得分:1)

除了理查德的答案之外,您的主要问题就是这一行:

lbPlaylist.Items.Add(o.GetFragment(tbTitle.Text));

在此处,您将整个集合作为一个项目添加到ListBox。你必须使用

lbPlaylist.Items.AddRange(o.GetFragment(tbTitile.Text).ToArray());

每个对象添加为单个项目

然后ListBox将使用集合中对象的ToString()方法显示每个对象的文本。如果您的SoundFragment针对您的需求实施了适当的ToString()方法,那么一切正常。否则,你必须像理查德建议的那样修改你的GetFragment方法。