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

使用此代码段,我找不到更改返回以输出列表中所有项目的方法。照原样,它只返回最后一项。我怎样才能让每件商品退回?

4

4 回答 4

8

您必须返回一个新列表,在您的示例中,您只是将 name 设置为当前名称,然后在最后返回 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());

上面的代码将返回一个以逗号分隔的元素标题列表的字符串。

于 2013-07-29T18:17:54.190 回答
0

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

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

如果您可以发布有关您的确切情况的更多详细信息,我们可以为您提供更好的帮助。

于 2013-07-29T18:26:24.827 回答
0

这对于只返回一个列表来说有点荒谬,但它确实有效。我个人会立即归还整个东西。

    List<object> li = new List <object>(Items);
    string name = "";
    foreach (var item in Items)
    {
        yield return item["title"].ToString();
    }
于 2013-07-29T18:17:52.597 回答
0

如您所知,方法可以通过 return 语句返回一个值。因此,您应该将所有项目作为 IEnumerable(列表、数组等)返回。

 return Items.Select(x => x["Title"].ToString()).ToArray();
于 2013-07-29T18:19:07.103 回答