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);
您正在返回一个ofchar
,您需要使用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++;
}