如何使用 linq 做到这一点? [复制]

Posted

技术标签:

【中文标题】如何使用 linq 做到这一点? [复制]【英文标题】:how to do this using linq? [duplicate] 【发布时间】:2011-03-29 13:00:15 【问题描述】:

可能重复:LINQ equivalent of foreach for IEnumerable<T>

请帮我弄清楚如何用 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 语句从表创建的项目数组。

谢谢! 康斯坦丁

【问题讨论】:

见***.com/questions/200574/… @aksonu:欢迎来到 ***!请投票支持对您有帮助的答案,并将对您最有帮助的答案标记为已接受(单击复选标记)。这是一个声誉系统,有助于提高您的声誉,并确保对您的问题做出高质量的回答。 @aksonu:记得在 *** 上为您认为有帮助的答案投票 - 每个答案得分上方/下方的灰色三角形。不为投票而钓鱼,只是想提供帮助! :) 这适用于所有答案,甚至那些不在您提出的问题上的答案! 不能。声誉不够 :) 感谢您的帮助。 【参考方案1】:

考虑将AddRange() 与新的ListItems 数组一起使用。您必须.Cast() 才能获得IEnumerableTableRow

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

【讨论】:

【参考方案2】:

怎么样

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

【讨论】:

我无法将 Select 应用于 table.Rows,可以吗? 那是我的错,只是把一些东西写下来作为一个想法,正如 p.campbell 指出的那样,你需要先投射,然后在最后调用 ToArray()

以上是关于如何使用 linq 做到这一点? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TSQL 而不是 linq 获取和跳过记录 [重复]

我想每次添加不同的图像,我重复使用这张卡片。如何在不复制粘贴整个代码的情况下做到这一点

是否可以通过反射来做到这一点? [复制]

我如何使用 ?: 在 Swift 中? [复制]

如何使用LINQ从列表中获取重复项?

如何使用 LINQ 从对象列表中获取唯一的属性列表?