返回foreach列表中的每个项目

时间:2013-07-29 18:15:46

标签: c# foreach

List<object> li = new List <object>(Items);
string name = "";
foreach (var item in Items)
{
    name = item["title"].ToString();
}
return name;

使用此代码段,我无法找到一种方法来更改列表中输出所有项的返回值。原样,它只返回最后一项。如何退回所有项目?

4 个答案:

答案 0 :(得分:7)

您必须返回一个新列表,在您的示例中,您只需将名称设置为当前名称,然后在结尾处返回名称。由于遍历所有元素,因此在返回之前将name设置为列表中的最终值。除此之外,您的返回类型为string,除非您将li中的所有元素合并为一个字符串,然后您不能将列表作为字符串返回。

 List<string> newList = li.Select(x => x["title"].ToString()).ToList();

将创建一个新的字符串列表,其中每个元素都是源列表li中元素的标题。

如果你真的想要返回一个字符串,你可以使用(我相信)String.Join或(我确定这个)Aggregate就像这样;

 return li.Aggregate((c, n) => c["title"].ToString() + ", " + b["title"].ToString());

上面的代码将返回字符串,该字符串是元素标题的逗号分隔列表。

答案 1 :(得分:0)

这对于返回列表有点荒谬但是有效。我个人只会立刻归还整件事。

    List<object> li = new List <object>(Items);
    string name = "";
    foreach (var item in Items)
    {
        yield return item["title"].ToString();
    }

答案 2 :(得分:0)

如您所知,method可以返回一个值 with return statement 。因此,您应该将所有项目作为IEnumerable(List,Array等)返回。

 return Items.Select(x => x["Title"].ToString()).ToArray();

答案 3 :(得分:0)

当您想要使用它们时,需要返回整个List并提取每个元素。你不能一次传递所有这些元素,除非你将它们存储在某种容器中(例如,数组)。

同样,如果您已经有一个List对象来容纳它们,那么这没有多大意义。 CLR的List<T>类型是可调长度数组,而不是经典链表。

如果您可以发布更详细的信息,我们可以为您提供更好的帮助。