可能重复:
使用LINQ保留顺序
假设我有以下Person类进一步用于声明一个数组Person:
public class Person
{
public int Id { get;set; }
public string Name { get; set; }
public int Age { get; set; }
}
var persons = new[] {
new Person { Id = 1, Name = "John", Age = 40 },
new Person { Id = 2, Name = "John", Age = 30 },
new Person { Id = 3, Name = "John", Age = 35 },
};
Run Code Online (Sandbox Code Playgroud)
我使用以下LINQ 扩展方法Age从数组中提取,PersonSelect
var ages = persons.Select(p => p.Age).ToArray;
Run Code Online (Sandbox Code Playgroud)
LINQ是否保证派生数组中项的顺序与源数组中项的顺序匹配,以使ages数组按以下顺序排列?
40
30
35
Run Code Online (Sandbox Code Playgroud)
zim*_*nen 10
LINQ to Objects操作符实际上并未更改其原始数据源 - 它们构建了由数据源有效支持的序列.改变排序的唯一操作是OrderBy/OrderByDescending/ThenBy/ThenByDescending - 即使这样,那些对于同等排序的元素也是稳定的.当然,许多操作会过滤掉一些元素,但返回的元素将按相同的顺序排列.
来自Jon Skeet的答案.
返回IEnumerable的每个操作的细分在同一问题中进一步下降:https: //stackoverflow.com/a/204777/128217
| 归档时间: |
|
| 查看次数: |
7928 次 |
| 最近记录: |