【问题标题】:Is it possible to specify the column in a for each loop of an array list? c#是否可以为数组列表的每个循环指定列? C#
【发布时间】:2014-09-17 08:46:54
【问题描述】:

我有一个包含两列的数组列表。我也有一个 foreach 循环。我可以指定仅循环第 1 列吗?任何帮助或建议将不胜感激。谢谢你。

foreach (object[] row in myArrayList)
 {
   foreach (object column in row) //I want to specify just the first column here
    {}
 }

【问题讨论】:

  • row[0] 怎么样?
  • 行是一个列数组
  • 你到底为什么还在使用ArrayList?使用类型安全的集合。并考虑为您的表创建一个类,而不是处理随机对象

标签: c# arraylist foreach


【解决方案1】:

C# 中没有行或列这样的概念。您似乎拥有的是嵌套数组的情况,即您有一个行数组,其中每一行本身就是一个数组:

var myArrayList = new[] { new[] { obj1, obj2 }, new[] { obj3, obj4 } }

因此,如果我的问题正确,您想提取 obj1obj3 例如,这将是 myArrayList 的“第一”列。您无法提取列,但您可以使用 LINQ Select 将数组元素(“行”)转换为您喜欢的任何内容:

var firstColumn = myArrayList.Select(row => row[0])

然后你可以迭代它:

foreach (object cell in firstColumn)
{ ... }

顺便说一句:您的变量名称 myArrayList 可能暗示您使用的是 ArrayList 而不是数组。它并没有真正的区别:C# 中的数组和各种集合都实现了IEnumerable,这是使用 LINQ 以及foreach 的唯一前提。

【讨论】:

  • 使用两个单独的数组会更好吗?每列一个
  • @user,这不能笼统地说。这取决于您主要使用数据做什么。如果您的大多数关键访问都是基于列的,则可能是“是”。但这会对其他决策产生影响,例如是否使用基于列的数据库(如果您的数据来自数据库)。
【解决方案2】:

下面的代码会为你做的

 foreach (object[] row in myArrayList)
 {
   object column =  row[0]
   //Do what ever you want to do with column
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多