c# – 如何编写一个通用的扩展方法来将分隔的字符串转换为列表?
发布时间:2020-12-15 03:56:38 所属栏目:百科 来源:网络整理
导读:我们经常需要将一个字符串用一些字符分隔成一个列表.我想编写一个通用扩展方法,它将字符串转换为指定类型的列表.这是我到目前为止 public static ListT ToDelimitedListT(this string value,string delimiter) { if (value == null) { return new ListT(); }
我们经常需要将一个字符串用一些字符分隔成一个列表.我想编写一个通用扩展方法,它将字符串转换为指定类型的列表.这是我到目前为止
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(); } 但是我收到一个错误.
有没有更好的方法来做到这一点,或者我需要为不同类型的列表创建多个扩展方法,并做Convert.ToInt32()等等? UPDATE 我正在尝试这样做: 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>(";"); 解决方法Convert.ChangeType 将适用于原始和许多框架类型(假设默认解析规则足够好):
return output.Select(x => (T) Convert.ChangeType(x,typeof(T))) .ToList(); 如果您需要这样做适用于您自己的自定义类型,则必须让它们实现 请记住,这不够完善,无法使用自定义转换规则或足够强大到足以应对故障(超出抛出异常并使整个操作失败).如果您需要支持,请提供接受 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |