List<object> li = new List <object>(Items);
string name = "";
foreach (var item in Items)
{
name = item["title"].ToString();
}
return name;
使用此代码段,我找不到更改返回以输出列表中所有项目的方法。照原样,它只返回最后一项。我怎样才能让每件商品退回?
您必须返回一个新列表,在您的示例中,您只是将 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());
上面的代码将返回一个以逗号分隔的元素标题列表的字符串。
您需要返回整个 List 并在要使用它们时提取每个元素。除非将它们存储在某种容器(例如数组)中,否则不能一次传递所有这些元素。
同样,如果您已经有一个 List 对象来容纳它们,这没有多大意义。CLR 的List<T>
类型是长度可调的数组,而不是经典的链表。
如果您可以发布有关您的确切情况的更多详细信息,我们可以为您提供更好的帮助。
这对于只返回一个列表来说有点荒谬,但它确实有效。我个人会立即归还整个东西。
List<object> li = new List <object>(Items);
string name = "";
foreach (var item in Items)
{
yield return item["title"].ToString();
}
如您所知,方法可以通过 return 语句返回一个值。因此,您应该将所有项目作为 IEnumerable(列表、数组等)返回。
return Items.Select(x => x["Title"].ToString()).ToArray();