【问题标题】:Get element in array in arraylist在arraylist中获取数组中的元素
【发布时间】:2014-02-18 23:49:29
【问题描述】:

我尽量简洁。我无法在网上找到答案,虽然我确定他们在那里,但我在 SO 上查看了这些问题并没有找到我想要的:

compare-and-retrieve-elements-from-arraylist

getting-index-of-an-item-in-an-arraylist

getting-a-particular-arraylist-element

我有一个ArrayList,其中包含许多数组,每个数组都是一维的,并且具有不同数量的元素(字符串和整数)。如何访问ArrayList 中的元素?

【问题讨论】:

  • 如果arraylist标签不适用,请移除它。虽然 C# 在 System.Collections 下确实有一个名为 ArrayList 的类,但该标签明确引用了 Java,所以我不确定是否应该使用它。
  • 您要访问什么类型的元素?一维数组中的所有元素?
  • ArrayList 包含数组列表。这些数组中有不同数量的项目。这些数组中的任何一项都可以是字符串或整数,并且可能以不同的配置出现。

标签: c# arrays


【解决方案1】:

您可以使用OfTypeSelectMany,例如,您可以像这样在一维 数组中获取所有stringinteger 值:

ArrayList arr = new ArrayList();
arr.Add(new []{ 1, 2, 3, 4, 5});
arr.Add(new [] {"asdas", "asdsa"});
var stringValues = arr.OfType<Array>()
                      .SelectMany(x => x.OfType<string>());  // asdas asdsa
var intValues = arr.OfType<Array>()
                   .SelectMany(x => x.OfType<string>());  // 1 2 3 4 5

【讨论】:

  • 我找不到方法 OfType 或 SelectMany。我对 Linq 不熟悉,但它看起来(根据下面的答案)可能就是你在说的。
  • @Stopforgettingmyaccounts...您使用的是哪个版本的 .NET Framework?添加对 System.Linq.dll 的引用,using System.Linq
  • using 语句有效,我使用的是 4.0 版。我不知道任何引用将方法添加到其他引用。 Linq 导入添加了 OfType(),但没有添加 SelectMany()。
  • 这是不可能的,SelectMany 在 4.0 中受支持,请参阅 documentation,而且 SelectMany 和 OfType 在同一个程序集中。你做错了什么。
  • @Stopforgettingmyaccounts... SelectMany 方法不将 ArrayList 作为第一个参数。您应该使用 OfType 或 Cast 方法来访问该方法,因为它需要 IEnumerable&lt;T&gt;。请参阅我的答案,我是否使用了 Arraylist .SelectMany ?
【解决方案2】:

Linq 有一个扩展方法 SelectMany,它会让所有子列表看起来都是一个列表

array.SelectMany(i => i);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多