【问题标题】:Skip and take method in ListList 中的 Skip 和 take 方法
【发布时间】:2018-03-05 11:24:02
【问题描述】:

我有一堂课Players。我想用SkipTake 方法创建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);

它适用于StringBuilder,但不适用于HyperLink

sb.AppendLine(string.Join(" ", players.Skip(skip).Take(take).Select(x => $"{x.Order}) {x.Name}")));

【问题讨论】:

  • 为什么不告诉我们收到的确切错误信息?
  • 你从哪里得到的 oyunculistesi

标签: c# asp.net list linq skip


【解决方案1】:

您的Select 正在返回IEnumerablechar,您需要使用string.Join 从它们构建一个字符串,就像您在StringBuilder 中所做的那样:

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

【讨论】:

    【解决方案2】:

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

        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++;
        }
    

    首先,我从您的代码中删除了 Take 部分,并使用 FirstOrDefault 来获取跳过后的第一个元素。最后,Players 元素只加载了一次,然后我将类的属性与更易读的代码一起使用。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多