如何跳过并接受数组

How skip and take in array

基本上我想做的是在屏幕上显示 16 个项目,并将额外的项目添加到新页面。

每页显示 16 个项目,另外 16 个项目与其他屏幕分开。

我正在使用二维数组 display/show 来筛选

Vector2 Pos;
int ItemsPerpage = 16;
int CurrentPage;

public void Draw(SpriteBatch spriteBatch)
{
        var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage);

        foreach (var item in items)
        {
            for (int X = 0; X < Columns; X++)
            {
                for (int Y = 0; Y < Rows; Y++)
                {
                    int DrawX = (int)pos.X + (X * (slotWight + 2));
                    int DrawY = (int)pos.Y + (Y * (slotWight + 2));

                    if(items[X,Y] != null)
                    {
                        spriteBatch.Draw(items[X,Y].Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White);
                    }
                }
            }
        }
    }

在此代码中 spritebatch.draw(item.texture dose not exit) 如果我将每个循环项替换为结果。

示例

public void Draw(SpriteBatch spriteBatch)
{
        var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage);
        foreach (var item in result)
        {
            for (int X = 0; X < Columns; X++)
            {
                for (int Y = 0; Y < Rows; Y++)
                {
                    int DrawX = (int)pos.X + (X * (slotWight + 2));
                    int DrawY = (int)pos.Y + (Y * (slotWight + 2));
                    if(items[X,Y] != null)
                    {
                        spriteBatch.Draw(item.Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White);
                    }

                }
            }
        }
    }

这里显示了列表中的所有项目。 如图所示a busy cat

 var result = items.Cast<double>().Skip(ItemsPerpage * (CurrentPage-1)).Таке(ItemsPerpage);

第一个问题你没有使用 Take。跳过中的第二个问题你应该有 itemsPerPage * (CurrentPage-1),因为如果你在第一页你不应该跳过任何记录所以:(1-1)*ItemsPAerPage = 0.