在数组中显示项目集(类型X的列表)

时间:2016-12-20 10:39:58

标签: c# arrays

如何在数组中显示特定的项目集?

我想按顺序从索引0到24打印25个项目到屏幕,从索引25打印另外25个项目。

我可以显示所有项目,但是如何从数组中的特定索引显示到另一个特定索引?

示例:我的数组中有100个项目。

我希望从0到3以及从4到7显示,依此类推。

例如:字母串:A B C D E F G等 而且我只想展示A B C.但是当我做某事时它会在阵列中显示下一个。

因为我使用B_items作为数组中的对象。我想在阵列中只显示0,1,2,再次形成3,4,5等等。

public class B_items
{
    public string Name {get; set;}
    public int Value { Get; set;}
}


B_items[,] items;
 public Inventory(Backpack Bpack, int Columns, int Rows, int SlotWidth, int SlothHeight, Vector2 Pos)
    {
        items = new B_items[Columns, Rows];
        pos = Pos;
        slotWight = SlotWidth;
        slotHeight = SlothHeight;
        backpack = Bpack;
        this.Columns = Columns;
        this.Rows = Rows;

        LoadItems(Bpack);
    }

for(int i = 0; i < items.Length; i++)
{
    Console.WritleLine(Items[i].Name;
}
   }
                if (items[X, Y] != null)
                {

                    spriteBatch.Draw(items[X, Y].Texure, new Rectangle(DrawX, DrawY, slotWight, slotHeight),new Rectangle(0,0,64,64),Color.White);
                    if (items[X, Y].StackSize > 1)
                    {
                        spriteBatch.DrawString(AssetManager.GetInstance().font["Arial8"], items[X, Y].StackSize.ToString(), new Vector2(DrawX + 24, DrawY + 22), Color.White);
                    }

                }

这将写下所有内容,我想做其中的5个。虽然我有100个,但每按一个按钮,它会显示该列表中的下一个5。

如何显示特定的项目列表...表格索引0到10以及表格11到20等等。

var stats = items.Skip(5).Take(5)

我不能这样做......我没有看到.Take(param).Skip(param)

我正在使用

using System.Linq;
using System;

我很抱歉没有具体。我不能也不知道如何提出有效的问题。我的英语不是我的第一语言,所以修改我的语法并删除这一行

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ访问阵列的范围。 Skip可让您决定开始范围的位置和Take您想要的条目数。

如果您想要示例中的D E F,可以使用:

var subRange = items.Skip(3).Take(3);

foreach (string item in subRange) {
    Console.WriteLine(item);
}

答案 1 :(得分:0)

  

我希望从0到3以及从4到7显示,依此类推。

您可以使用普通的for循环并指定要增加的步长。每一步,您都会跳过已处理的项目,并且每次只执行指定的步长(在您的情况下为3)。 这应该可以解决问题:

// test array 
int[] array = Enumerable.Range(1, 100).ToArray();

int stepsize = 3;

for (int i = 0; i < array.Length; i += stepsize)
{
    string s = String.Join(" ", array.Skip(i).Take(stepsize));
    Console.WriteLine(s);
}