在先前已排序的列表上使用Where

时间:2014-09-10 12:26:32

标签: c# .net linq

我有一个List<>我以前按对象上的一个字段排序。如果我在列表上执行Where(),我可以安全地假设Where的结果也将被排序吗?

// Sorted by salary, greatest to smallest.
List<Players> players = _playerRepo.GetAll().OrderByDescending(x => x.Salary).ToList();

// Is this list safe to assume that the players with smith as last name are sorted by salary as well?
List<Players> filteredPlayers = players.Where(x => x.LastName == "Smith").ToList();

2 个答案:

答案 0 :(得分:3)

是。通常,LINQ查询保持元素的顺序。

提示:如果您想进一步过滤结果,请不要致电ToList。如果可能,您应该在数据库上执行查询,而不是在客户端上执行查询。

答案 1 :(得分:2)

是的,Where不会更改以前订购的列表的顺序,它只会过滤它。

此外,订购操作是稳定,因此相等的值将保持其原始顺序。