我有一个简单的任务,我需要检查一本字典中的对象,如果满足某些条件,则移至另一本。我要问的是,是否有一些好的模式可以使用语言功能来实现。直接的方法很简单-使用临时收集,第一步确定候选人,第二步进行实际移动。可以,但是不酷。
当前代码
class Order
{
public int ID;
public bool IsReady;
}
Dictionary<int, Order> ActiveDictionary;
Dictionary<int, Order> ProcessedDictionary;
public Update()
{
// temporary list, uncool
List<Order> processed = new List<Order>();
// fist step
foreach(Order ord in ActiveDictionary)
{
if(ord.IsReady)
{
processed.Add(ord);
}
}
// ok now lets move
foreach(Order ord in processed)
{
ActiveDictionary.Remove(ord.ID);
ProcessedDictionary.Add(ord.ID, ord);
}
}
最佳答案
您拥有的代码并没有什么真正的错误。
作为替代方案的练习,您可以做类似...
ProcessedDictionary = ProcessedDictionary
.Concat(
ActiveDictionary.Where(kvp => kvp.Value.Ready)
)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
ActiveDictionary = ActiveDictionary.Where(kvp => !kvp.Value.Ready)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
关于c# - 如何在字典之间移动对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4324276/