2010-08-24 2 views
3

У меня есть объект с ID и свойствами имени.Преобразовать список одного типа в список другого типа в C# 3.5

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

List<string> myObjectNames = myObjectList.? 

ответ

18

Если вы знаете, что это конкретно List<T>, а не другой коллекции типа, то вы можете использовать List<T>.ConvertAll:

Преобразует элементы текущего List<T> к другому типу, и возвращает список, содержащий преобразованное элементы.

Пример:

List<string> myObjectNames = myObjectList.ConvertAll(x => x.Name); 

Если вы просто знаете, что это перечислимого типа, но не обязательно список, то вы можете использовать методы расширения LINQ Enumerable<T>.Select и Enumerable<T>.ToList:

List<string> myObjectNames = myObjects.Select(x => x.Name).ToList(); 
+1

Возможно, вы должны упомянуть метод расширения Cast? –

+0

Метод расширения Cast () делает вещь, написанную в заголовке вопросов (например, преобразование списка строк в список целых чисел). Но это не соответствует примеру в вопросе ... –