2010-08-13 69 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語句爲它提供一個從表創建的項目數組。

謝謝! 康斯坦丁

+0

@aksonu:歡迎來到StackOverflow!請選出對您有幫助的答案,然後將答案標記爲已接受(點擊選中標記)以獲得最有幫助的答案。這是有助於提高聲譽的信譽系統,以及確保您的問題的質量答案。 – 2010-08-13 15:45:59

+0

@aksonu:請記住在StackOverflow中提供有用的答案 - 每個答案的分數上方/下方的灰色三角形。不釣魚upvotes,只是想幫助! :)這適用於所有答案,即使那些沒有問你問過的答案! – 2010-08-13 15:53:12

+0

不能。沒有足夠的聲譽:)感謝您的幫助。 – akonsu 2010-08-13 15:54:25

回答

1

考慮使用AddRange()隨着新ListItems陣列。您必須登錄.Cast()才能獲得IEnumerableTableRow

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

怎麼樣

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

我無法應用Select to table.Rows,可以嗎? – akonsu 2010-08-13 15:31:42

+0

這是我的不好,只是寫了一些想法,正如p.campbell指出的,你需要先投,然後在最後調用ToArray() – theburningmonk 2010-08-13 15:56:11