2017-09-24 2 views
0

나는 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); 

그것은하지만 HyperLink하지와 StringBuilder 작업이다.

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

정확한 오류 메시지를 보내 주시면 감사하겠습니다. – Steve

+0

그리고 당신은 그 _oyunculistesi_을 어디에서 얻었습니까? – Steve

답변

1

귀하의 SelectcharIEnumerable 반환하고 당신은 당신이 StringBuilder에 무슨 짓을했는지처럼 string.Join를 사용하여 그들로부터 문자열을 구축해야합니다

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

내가 이런 식으로 루프를 다시 작성할 것

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를 g 항상 첫 번째 요소는 건너 뜁니다. 마지막으로 Players 요소가 한 번로드 된 다음 더 읽기 쉬운 코드로 클래스의 속성을 사용했습니다.

관련 문제