是否有任何捷径或更好的方式将List<bool>
强制转换为List<object>
?
我知道我可以通过循环和转换单个项目来做到这一点,但我想知道是否可以在一个语句中强制转换整个列表。
答案 0 :(得分:9)
您可以使用Enumerable.Cast<T>
方法执行此操作:
List<bool> bools= GetBoolList();
IList<Object> objects= bools.Cast<Object>().ToList();
答案 1 :(得分:6)
执行此操作的非LINQ方法是使用List.ConvertAll
:
List<bool> b = new List<bool> { true, false, true };
List<object> o = b.ConvertAll(x => (object)x);
由于此方法知道创建新列表的大小,因此它可能比大型列表的LINQ版本更快。
答案 2 :(得分:3)
List<bool> list = new List<bool>{true,true,false,false,true};
List<Object> listObj1 = list.Select(i=> (Object)i).ToList();// First way
List<Object> listObj2 = list.Cast<Object>().ToList();// Second way
List<Object> listObj3 = list.OfType<Object>().ToList();// Third way
以下是在linqpad
中快速测试 list.Dump();
listObj1.Dump();
listObj2.Dump();
listObj3.Dump();