C# 从IORDerenumerable中删除对象

C# 从IORDerenumerable中删除对象,c#,linq,collections,iorderedenumerable,C#,Linq,Collections,Iorderedenumerable,我把字典分类如下: var sortedListOfNodes = _nodeDictionary.Values.OrderBy((n) => n.Time); 然后,我选择了这样一个元素: var selectedNode = sortedListOfNodes.First(n => n.Time - CurrentTime > new TimeSpan(1,0,0)); 然后我对该节点进行了一些处理,最后希望在不破坏排序顺序的情况下从列表中删除该节点 下面的人会维持秩序

我把字典分类如下:

var sortedListOfNodes = _nodeDictionary.Values.OrderBy((n) => n.Time);
然后,我选择了这样一个元素:

var selectedNode = sortedListOfNodes.First(n => n.Time - CurrentTime > new TimeSpan(1,0,0));
然后我对该节点进行了一些处理,最后希望在不破坏排序顺序的情况下从列表中删除该节点

下面的人会维持秩序吗

sortedListOfNodes = (IOrderedEnumerable<Node>)sortedListOfNodes.Where(node => node != selectedNode);
sortedListOfNodes=(IOrderedEnumerable)sortedListOfNodes.Where(node=>node!=selectedNode);

OrderBy
之后添加对
ToList
的调用。现在您有了一个可以操作的列表(假设您不插入项,它将保持顺序)


另请注意,您将
的结果强制转换为
IOrderedEnumerable
的示例将在运行时失败,并导致强制转换失败。您正在调用的
是一个具体类型,它没有实现该接口。

完美,没有想到这一点。非常感谢。
var sortedListOfNodes = _nodeDictionary.Values.OrderBy((n) => n.Time).ToList();
var selectedNode = sortedListOfNodes.First(n => n.Time - CurrentTime > new TimeSpan(1,0,0));
sortedListOfNodes.Remove(selectedNode);