And*_*ers 2 c# linq collections iorderedenumerable
我像这样对字典进行排序:
var sortedListOfNodes = _nodeDictionary.Values.OrderBy((n) => n.Time);
Run Code Online (Sandbox Code Playgroud)
然后我选择了一个元素:
var selectedNode = sortedListOfNodes.First(n => n.Time - CurrentTime > new TimeSpan(1,0,0));
Run Code Online (Sandbox Code Playgroud)
然后我对该节点进行了一些处理,最后想从列表中删除该节点,而不破坏排序顺序。
下面会维持秩序吗?
sortedListOfNodes = (IOrderedEnumerable<Node>)sortedListOfNodes.Where(node => node != selectedNode);
Run Code Online (Sandbox Code Playgroud)
添加对ToListafter的调用OrderBy。现在您有了一个可以操作的列表(假设您不插入项目,它将保持有序)。
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);
Run Code Online (Sandbox Code Playgroud)
附带说明一下,您将Whereto的结果强制转换的示例IOrderedEnumerable<Node>将在运行时因强制转换失败而失败。在Where您呼叫的是未实现该接口的具体类型。