首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将ListBox.items转换为泛型列表的最简洁方法

将ListBox.items转换为泛型列表的最简洁方法
EN

Stack Overflow用户
提问于 2009-10-14 10:35:50
回答 5查看 66.2K关注 0票数 62

我使用的是C#,目标是.NET Framework3.5。我正在寻找一个小的,简洁和有效的代码片段,将ListBox中的所有项复制到List<String> (通用List)。

目前,我的代码类似于下面的代码:

代码语言:javascript
复制
        List<String> myOtherList =  new List<String>();
        // Populate our colCriteria with the selected columns.

        foreach (String strCol in lbMyListBox.Items)
        {
            myOtherList.Add(strCol);
        }

当然,这是可行的,但我不禁感觉到,肯定有更好的方法来使用一些较新的语言特性来实现这一点。我在考虑类似List.ConvertAll方法的东西,但这只适用于泛型列表,而不适用于ListBox.ObjectCollection集合。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-14 10:44:59

使用一点LINQ就可以了:

代码语言:javascript
复制
 var myOtherList = lbMyListBox.Items.Cast<String>().ToList();

当然,您可以将强制转换的Type参数修改为您在Items属性中存储的任何类型。

票数 114
EN

Stack Overflow用户

发布于 2009-10-14 10:48:43

以下代码将完成此操作(使用Linq):

代码语言:javascript
复制
List<string> list = lbMyListBox.Items.OfType<string>().ToList();

OfType调用将确保只使用列表框中字符串形式的项。

使用Cast时,如果有任何项不是字符串,您将得到一个异常。

票数 29
EN

Stack Overflow用户

发布于 2009-10-14 10:44:42

这样如何:

代码语言:javascript
复制
List<string> myOtherList = (from l in lbMyListBox.Items.Cast<ListItem>() select l.Value).ToList();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1565504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档