2010-08-13 43 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