相关疑难解决方法(0)

OrderBy Linq的奇怪行为

我有一个使用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()子句一起使用时,保留了顺序.

有谁能帮助我这里发生的事情?

样本输出图示:

在此输入图像描述

c# linq ienumerable iorderedenumerable

2
推荐指数
1
解决办法
412
查看次数

标签 统计

c# ×1

ienumerable ×1

iorderedenumerable ×1

linq ×1