我有一个看起来如上面那样的 List<object>
,我想将它转换为 List<string>
。
我该如何进行转换?
我需要一个包含 6 个项目的 List<string>
(11:00、13:45 等)。
我有一个看起来如上面那样的 List<object>
,我想将它转换为 List<string>
。
我该如何进行转换?
我需要一个包含 6 个项目的 List<string>
(11:00、13:45 等)。
var mylist = myObjectList.ConvertAll(x => x.ToString());
编辑
var mylist = myObjectList.ConvertAll(x => Convert.ToString(x));
感谢 Scott Chamberlain
获取第一个对象数组
var mylist = (myObjectList.First() as object[]).ToList()
.ConvertAll(x=>Convert.ToString(x));
将休息加入列表。mylist.AddRange(mylist.GetRange(1,myObjectList.Count-2).ConvertAll(x=>Convert.ToString(x)));
ConvertAll
。然而,你应该使用 Convert.ToString(x)
,因为它会检查类是否支持 IConvertable
,如果不支持,则回退到 .ToString()
。 - Scott Chamberlainvar stringList = yourObjectList.OfType<string>().ToList();
记得添加命名空间 System.Linq;
需要使用OfType将数组转换为 array<T>
,以便在 LINQ 中使用。
yourObjectList
里有什么?应该是seanceInfo.theatre[i].seances[0]
。 - gunr2171试试这个
List<string> stringlist = objectList.Cast<string>()
.ToList();
如果您不确定这些元素是字符串,您可以使用Select
。
List<string> stringlist = objectList.Select(x=> x.ToString())
.ToList();
为避免空值引用异常,请尝试以下方法:
List<string> stringlist = objectList.Where(x=> x != null)
.Select(x=> x.ToString())
.ToList();
null
值上失败。 - Servyint i = //Some code that sets i, like a for loop
var oldList = seanceInfo.theatre[i].seances;
List<string> newList = oldList.Cast<string>().ToList();
如果您不确定所有的对象都是字符串,您需要进行某种类型的转换,然而这同样很容易。
List<string> newList = oldList.Select(o => Convert.ToString(o)).ToList();
List<object>
,而seances的第一个索引是object[]
。我需要这些项。”,我认为您真正想要的可能是SelectMany
。List<string> info = seanceInfo.theatre.SelectMany(x => x.seances).Select(x => Convert.ToString(x)).ToList();
\\...
。 - Scott ChamberlainmyObjectList.Cast<string>();
myObjectList.OfType<string>();
TypeOf
。 - Sriram SakthivelOfType
。它实际上像一个 where
语句,寻找给定类型的对象,并筛选掉不是该类型的对象。如果你的列表中有超过两种类型,或者你的类型一开始就不是字符串类型,那么它将选择更少的对象。 - gunr2171强制类型转换,例如:
var list = (List<String>) listObjects.
List<object>
,而是一个大小为6的object[]
。 - Scott Chamberlain