C#选择列表中的元素作为字符串列表

时间:2012-03-27 08:22:13

标签: c# linq

在C#中,我需要从对象列表中获取特定属性的所有值到字符串

列表中
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方法,但我想知道 if \如何使用linq或IENumerable函数或一些较短的代码从列表对象属性值中提取值一个字符串对象。

我的查询与C# select elements from IList类似,但我希望结果为字符串

列表

2 个答案:

答案 0 :(得分:90)

List<string> empnames = emplist.Select(e => e.Ename).ToList();

这是Projection in Linq的一个例子。接下来是ToListIEnumerable<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));

答案 1 :(得分:10)

List<string> empnames = (from e in emplist select e.Enaame).ToList();

或者

string[] empnames = (from e in emplist select e.Enaame).ToArray();

等等...