2

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

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

无法将类型“System.Linq.IOrderedEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换(您是否缺少演员表?)

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

范围变量

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

3 回答 3

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();
于 2012-08-29T18:46:54.960 回答
4

如果您希望将结果作为列表,只需将 ToList() 附加到您的查询中。或者简单地声明 empsvar emps将有一个类型IOrderedEnumerable

于 2012-08-29T18:45:29.020 回答
1

之前已经在这里回答过,只需在 linq 中使用 orderby 关键字即可

var emps = from e in employeeInfo.Employees 
            where e.Active orderby e.LastName thenby e.FirstName select e;
于 2012-08-29T18:52:17.393 回答