如何在数组中显示特定的项目集?
我想按顺序从索引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;
我很抱歉没有具体。我不能也不知道如何提出有效的问题。我的英语不是我的第一语言,所以修改我的语法并删除这一行
答案 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);
}