【问题标题】:How to foreach only certain row in a collection at one time?如何一次只foreach集合中的某一行?
【发布时间】:2017-01-04 02:17:36
【问题描述】:

我目前正在为多个集合进行 foreach 循环,即 Pizza、SideOrder、Drink 和 Gift。如果集合中的任何项目具有相同的 ID 和 DateCreated,我想检查每个集合。我只想 foreach 每个集合的每 n 行,然后是下一行。

以下是我的编码(部分只是因为编码太长)

int count = Pizzas.Count + SideOrder.Count + Drink.Count + Gift.Count;

for (int j = 1; j < count; j++)
{

  foreach (var o in Pizzas)
  {/*to do something*/ }

  foreach (var o in SideOrder)
  {/*to do something*/ }

  foreach (var o in Drink)
  { /*to do something*/ }

  foreach (var o in Gift)
  { /*to do something*/ }


}

我想要的是 j = 1,它应该 foreach 第一行 Pizza、SideOrder 等。然后 j = 2,foreach 第二行.. 等等。

有什么帮助吗?谢谢。

【问题讨论】:

  • 用于多个集合,即 Pizza、SideOrder、Drink 和 Gift。 --> 那么,单个 foreach 用于多个集合?
  • 这不是 foreach 的工作方式。只需使用普通的 for 循环和索引。
  • @BagusTesa 我的意思是每个集合都有 foreach。我只想一次做一排
  • @OldProgrammer 我需要制作 Pizzas.ToArray() 吗?
  • 我认为你必须想出一个更好的逻辑来实现这个,可能是通过创建一个拥有这些集合和orderIdorderDAte 作为成员的类(让它成为Order)并使用List&lt;Order&gt;进行处理

标签: c# foreach


【解决方案1】:

如果我正确理解您的问题。您可以尝试在不使用 foreach 的情况下获取 Collections 索引

for(int j = 1; j < count; j++)
{
    Pizzas[j];
    SideOrder[j];
    Drink[j];
    Gift[j];
}

【讨论】:

  • 谢谢!我想这是最好的解决方案:D
【解决方案2】:

使用while循环,

int i = 1;
    while (i < count)
    {
        Pizzas[j];
        SideOrder[j];
        Drink[j];
        Gift[j];
        i++;
    }

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 2012-07-27
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多