【发布时间】:2013-03-07 01:34:38
【问题描述】:
我们经常需要将值由某个字符分隔的字符串转换为列表。我想编写一个通用扩展方法,将字符串转换为指定类型的列表。这是我目前所拥有的:
public static List<T> ToDelimitedList<T>(this string value, string delimiter)
{
if (value == null)
{
return new List<T>();
}
var output = value.Split(new string[] { delimiter }, StringSplitOptions.RemoveEmptyEntries);
return output.Select(x => (T)x).ToList();
}
但我得到一个错误。
无法将类型“字符串”转换为类型“T”。
有没有更好的方法来做到这一点,还是我需要为不同类型的列表创建多个扩展方法并执行Convert.ToInt32() 等?
更新
我正在尝试做这样的事情:
var someStr = "123,4,56,78,100";
List<int> intList = someStr.ToDelimitedList<int>(",");
或
var someStr = "true;false;true;true;false";
List<bool> boolList = someStr.ToDelimitedList<bool>(";");
【问题讨论】:
-
当涉及的唯一类型是字符串时,为什么要使用泛型方法?
-
字符串需要转换成不同的类型。字符串中的值可以是
1,2,3,4,5或true,false,false,true。 -
您必须为此编写一些代码!
-
必须返回List吗?为什么不通过 IEnumerable 获得懒惰评估
标签: c# .net linq list type-conversion