【问题标题】:How can I generate List<String> from nested objects?如何从嵌套对象生成 List<String>?
【发布时间】:2012-08-19 05:39:45
【问题描述】:

我有以下嵌套类:

class Report
{
    List<ReportItem> list;
}

class ReportItem
{
    public string str1;
    public string str2;
}

如果不向上述类添加任何新方法,如果我有Report r,如何在r.list 中包含的所有str1 字符串中生成List&lt;String&gt;

没有 Linq,因为我使用的是 VS2005。

【问题讨论】:

  • 这些不是嵌套对象。
  • @Kobi:嵌套对象只是另一个对象中的一个对象。
  • @CuongLe:请看下面我的回答
  • 在 C# 中,类字段的默认访问修饰符是 private。因此,如果不修改类,您将无法访问上述任何字段。
  • @Eren:接受,但这并不是问题中的关键问题。为什么不自己编辑呢?

标签: c# list visual-studio-2005 nested-class


【解决方案1】:
List<string> resultList = new List<string>();
foreach (ReportItem ri in r.list) { resultList.Add(ri.str1); }

【讨论】:

    【解决方案2】:

    根据 .NET 版本,您可以使用 Array.ConvertAll 函数来翻译元素,如下所示:

    new List<string>(Array.ConvertAll(list.ToArray(), delegate(Report item){ return item.str1; }));
    

    虽然有点乱。

    【讨论】:

    • @Kobi:=&gt; 运算符是什么?我在帮助页面中找不到它。
    • @Gray - 这类似于 delegate,但过于复杂 - 您使用 foreach 的解决方案要简单得多。
    • 请注意,liststr1 都是私有字段,所以这不起作用(除非问题是错误的并且它们确实应该是公开的)。
    猜你喜欢
    • 2020-11-18
    • 2022-01-21
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2023-01-11
    • 1970-01-01
    相关资源
    最近更新 更多