2012-05-10 7 views
1

Есть ли какой-либо ярлык или лучший способ приведения типа List<bool> к List<object>?Список листингов <bool> в список <object>

Я знаю, что могу это сделать, зацикливая и отбрасывая отдельный элемент, но я хочу знать, возможно ли это, чтобы вывести весь список в одном утверждении.

ответ

8

вы можете сделать это с помощью Enumerable.Cast<T> метода:

List<bool> bools= GetBoolList(); 
IList<Object> objects= bools.Cast<Object>().ToList(); 
+0

Можете привести пример для этого. Я так никогда не пользовался. – IrfanRaza

+0

просто делал это, как вы просили :) –

+0

@Sam: OP хочет наоборот, бросить bool на объект. –

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(); 
6

Не-LINQ способ сделать это с List.ConvertAll:

List<bool> b = new List<bool> { true, false, true }; 
List<object> o = b.ConvertAll(x => (object)x); 

Поскольку этот метод знает, какой размер для создания нового списка, он, вероятно, будет быстрее, чем версия LINQ для больших списков.

+0

Спасибо, Гейб! Это самый простой способ. – IrfanRaza

+0

'ConvertAll' создает новый' List ', тогда как' Cast' LINQ дает литые элементы. –

+1

@TimSchmelter: Да, но OP ищет «Список ' не 'IEnumerable '. – Gabe