从foreach返回列表中的每个项目

本文关键字:项目 foreach 返回 列表 | 更新日期: 2023-09-27 18:25:28

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

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

从foreach返回列表中的每个项目

您必须返回一个新列表,在您的示例中,您只需将 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<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();

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

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

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