private static IEnumerable<FormulaKey> DeserializeFormulaKeyCollection(
IEnumerable<SerializableTuple<int, string>> graph,
ILookup<string, FormulaKey> localVariables,
ILookup<string, FormulaKey> globalVariables)
{
return graph == null ? null : graph.Select(g => (Tuple<int, string>) g).Select(g =>
{
var key = (FormulaEditorKey) g.Item1;
switch (key)
{
case FormulaEditorKey.LocalVariable: return localVariables[g.Item2].FirstOrDefault();
case FormulaEditorKey.GlobalVariable: return globalVariables[g.Item2].FirstOrDefault();
default: return new FormulaKey(key, null);
}
}).Where(data => data != null);
}