C# 列表中的Skip和take方法

C# 列表中的Skip和take方法,c#,asp.net,list,linq,skip,C#,Asp.net,List,Linq,Skip,我有一个班级玩家。我想用Skip和Take方法创建Hyperlink。但是给了我System.Linq.Enumerable错误。我的目标是制作一个金字塔用户列表。这是我的密码 public class Players { public string Name{ get; set; } public int Order{ get; set; } public int ID { get; set; } } List<Players> playerlist=

我有一个班级
玩家
。我想用
Skip
Take
方法创建
Hyperlink
。但是给了我
System.Linq.Enumerable
错误。我的目标是制作一个金字塔用户列表。这是我的密码

public class Players
{
    public string Name{ get; set; }
    public int Order{ get; set; }
    public int ID { get; set; }
}



List<Players> playerlist= new List<Players>();
playerlist= (from DataRow dr in dt.Rows
             select new Players()
             {
                 Name= (dr["name"].ToString()),
                 Order= int.Parse(dr["order"].ToString()),
                 ID = int.Parse(dr["Id"].ToString())
             }).ToList();

playerlist= playerlist.OrderBy(x => x.Order).ToList();

int skip = 0;
int take = 1;
int addedCount = 0;

do
{   
    HyperLink links= new HyperLink();
    links.Text = "" + playerlist.Skip(skip ).Take(take).Select(x => x.Name);
    links.NavigateUrl = "playerdetails.aspx?id=" + oyunculistesi.Skip(skip).Take(take).Select(x => x.ID);
    Page.Controls.Add(links);
    addedCount += take ;
    skip+= take ;
    take += +1;
}
while (addedCount < playerlist.Count);
您正在返回一个of
char
,您需要使用
string从中生成一个字符串。请像在
StringBuilder
中所做的那样加入

linkuret.Text = string.Join("" , playerlist.Skip(skip).Take(take).Select(x => x.Name));

我会用这种方式重写你的循环

    int skip = 0;
    while (skip < playerlist.Count)
    {

        HyperLink links= new HyperLink();
        Players p = playerlist.Skip(skip).FirstOrDefault();
        links.Text = $"{p.Name}" 
        links.NavigateUrl = $"playerdetails.aspx?id={p.Id}"
        Page.Controls.Add(links);
        skip++;
    }
int skip=0;
while(跳过

首先,我从代码中删除了Take部分,并使用FirstOrDefault始终获取跳过后的第一个元素。最后,仅加载一次Players元素,然后我使用类的属性和可读性更强的代码。

为什么不告诉我们收到的确切错误消息?从哪里得到的?
    int skip = 0;
    while (skip < playerlist.Count)
    {

        HyperLink links= new HyperLink();
        Players p = playerlist.Skip(skip).FirstOrDefault();
        links.Text = $"{p.Name}" 
        links.NavigateUrl = $"playerdetails.aspx?id={p.Id}"
        Page.Controls.Add(links);
        skip++;
    }