С# Выбрать элементы в списке как Список строк
В С# мне нужно получить все значения определенного свойства из списка объектов в список строки
List<Employee> emplist = new List<Employee>()
{
new Employee{ EID=10, Ename="John"},
new Employee{ EID=11, Ename="Adam"},
new Employee{ EID=12, Ename="Ram"}
};
List<string> empnames = emplist.//get all Enames in 'emplist' object into list
//using linq or list functions or IENumerable functions
Мне знакомы с методом foreach для извлечения значения, но я хочу знать , если \, как его возможно использовать функции linq или IENumerable или какой-либо более короткий код для извлечения значений из значений свойств объекта списка в строковый объект.
Мой запрос похож на С# выбирать элементы из IList, но я хочу, чтобы результат был как список строк
Ответы
Ответ 1
List<string> empnames = emplist.Select(e => e.Ename).ToList();
Это пример Проекции в Linq. Затем выполните ToList
, чтобы разрешить IEnumerable<string>
в List<string>
.
Альтернативно в синтаксисе Linq (скомпилированный головой):
var empnamesEnum = from emp in emplist
select emp.Ename;
List<string> empnames = empnamesEnum.ToList();
Проецирование в основном представляет текущий тип перечисляемого как новый тип. Вы можете проецировать анонимные типы, другой известный тип, вызывая конструкторы и т.д. Или перечислимые из одного из свойств (как в вашем случае).
Например, вы можете проецировать перечисление Employee
на перечислимое значение Tuple<int, string>
следующим образом:
var tuples = emplist.Select(e => new Tuple<int, string>(e.EID, e.Ename));
Ответ 2
List<string> empnames = (from e in emplist select e.Enaame).ToList();
или
string[] empnames = (from e in emplist select e.Enaame).ToArray();
Etc...