当前位置:  开发笔记 > 编程语言 > 正文

如何有效地转换List <T>?

如何解决《如何有效地转换List<T>?》经验,为你挑选了4个好方法。



1> Helen Toomik..:

.OfType 和.Cast 都将返回T列表,但两种方法的含义不同.

list.OfType 过滤原始列表并返回T类型的所有项目,并跳过那些不属于该类型的项目.

list.Cast 原始列表中的所有项目强制转换为T类型,并为无法转换为该类型的项目抛出异常.

在你的情况下,两者都会给出相同的结果,但使用.Cast可以更清楚地传达你的意图,所以我建议使用它.

List list = (from i .... select i).Cast.ToList();



2> Amy B..:
List raw = (from i .... select i).ToList();
List result = raw.OfType().ToList();



3> CubanX..:

您也可以使用List.ConvertAll.

文档:http://msdn.microsoft.com/en-us/library/73fe8cwf.aspx

例:

List newList = oldList.ConvertAll(i => i as IDataField);


正是我要说的.请注意,在C#2.0中,您需要明确指定泛型,但在C#3.0(如上所述)中,它是推断的.

4> Arjan Einbu..:

由于列表来自

List list = (from i .... select i).ToList();

难道你不能只修复"选择我"部分而不是返回IDataField吗?像这样的东西:

List list = (from i .... select (IDataField)i).ToList();

如果这不起作用,也许IEnumerable的"Cast"扩展可以工作:

List list2 = list.Cast();

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有