我有一个使用OrderBy()Linq函数排序的列表,它返回一个IOrderedEnumerable.
var testList = myList.OrderBy(obj => obj.ParamName);
Run Code Online (Sandbox Code Playgroud)
ParamName是一个可以保存整数和字符串的对象.上面的orderBy基于整数值对列表进行排序.现在我在testList上运行foreach并根据其整数值将ParamName属性更改为某个字符串,如下所示,
using (var sequenceEnum = testList.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
sequenceEnum.Current.ParamName = GetStringForInteger(int.Parse(Convert.ToString(sequenceEnum.Current.ParamName)));
}
}
Run Code Online (Sandbox Code Playgroud)
接下来发生的事情是上一循环之后列表中项目的顺序已被中断,并且已根据分配的字符串而不是初始排序对列表进行排序.
但是,当我.ToList()与该.OrderBy()子句一起使用时,保留了顺序.
有谁能帮助我这里发生的事情?
样本输出图示: