2010-08-13 10 views
3

가능한 중복 :
LINQ equivalent of foreach for IEnumerable<T>linq를 사용하여이 작업을 수행하는 방법은 무엇입니까?

는 LINQ 식 아래의 루프를 교체하는 방법을 알아 내기 위해 좀 도와주세요 :


using System.Web.UI.WebControls; 
... 
Table table = ...; 
BulletedList list = new BulletedList(); 

foreach (TableRow r in table.Rows) 
{ 
    list.Items.Add(new ListItem(r.ToString())); 
} 

이 인위적인 예입니다, 사실 나는 행을 물론 문자열로 변환하지 않을 것입니다.

BulletedList.AddRange를 사용하고 linq 문을 사용하여 테이블에서 만든 항목의 배열을 제공하는 방법을 묻습니다.

감사합니다. 대한

list.Items.AddRange(table.Rows.Select(r => new ListItem(r.ToString()))); 
+0

@aksonu : Welcome to StackOverflow! 도움이되는 투표까지의 답변을 작성하고 가장 도움이 된 답변을 승인 된 것으로 표시하십시오 (체크 표시를 클릭하십시오). 이것은 평판을 향상시키는 데 도움이되는 평판 시스템이며 질문에 대한 정답을 보장합니다. –

+0

@aksonu : StackOverflow에서 도움이되는 답변을 upvote로 회상하십시오. 각 답변의 위/아래에 회색 삼각형이 있습니다. upvotes에 대한 낚시 아니, 그냥 도우려고! :) 이것은 질문에 대한 질문이 아니더라도 모든 대답에 적용됩니다! –

+0

수 없습니다. 충분하지 않은 평판 : 당신의 도움에 감사드립니다. – akonsu

답변

1

새로운 ListItems의 배열 AddRange() 사용을 고려하는 방법 콘스탄틴

1

. IEnumerableTableRow이 되려면 .Cast()이어야합니다.

list.Items.AddRange(
     table.Rows.Cast<TableRow>() 
        .Select(x => new ListItem(x.ToString())) 
        .ToArray() 
    ); 
+0

적용 할 수 없습니다. 테이블로 선택하십시오. 행, 그럴 수 있습니까? – akonsu

+0

그게 내 잘못이야, 그냥 아이디어로 뭔가를 썼다 p.campbell 지적했다, 당신은 먼저 던져, 그리고 ToArray() 결국 호출해야 할 거라고 지적했다. – theburningmonk

관련 문제