Linq查询OrderBy Multiple

时间:2012-08-29 18:42:58

标签: c# linq linq-to-objects

我有一个List<Employees>集合,我正在尝试选择Active名员工。

我一定做错了,因为我在这里看到很多例子表明我可以做到这一点,但Visual Studio告诉我我不能因为:

  

无法将类型'System.Linq.IOrderedEnumerable'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否错过了演员?)

这张照片出了什么问题? LastNameFirstName(您可能怀疑)都是字符串值,Active是布尔值。

range variable

DataGridView1.DataSource = null;
List<AcpEmployee> emps = from e in employeeInfo.Employees
                         where e.Active 
                         orderby e.LastName, e.FirstName descending
                         select e;

3 个答案:

答案 0 :(得分:9)

您应该在查询结尾处使用ToList

List<AcpEmployee> emps = (  from e in employeeInfo.Employees
                            where e.Active
                            orderby e.Active orderby e.LastName, e.FirstName descending
                            select e).ToList();

或直接使用这些方法:

List<AcpEmployee> emps = employeeInfo.Employees
    .Where(e => e.Active)
    .OrderBy(e => e.LastName)
    .ThenByDescending(e => e.FirstName)
    .ToList();

答案 1 :(得分:4)

如果您希望将结果作为列表,只需将ToList()附加到查询中即可。或者简单地将emps声明为var emps,其类型为IOrderedEnumerable

答案 2 :(得分:1)

这是answered here before,只需在linq中使用orderby关键字

var emps = from e in employeeInfo.Employees 
            where e.Active orderby e.LastName thenby e.FirstName select e;
相关问题