我使用自定义键的Dictionary如下:
Dictionary<ClassOfEnums, AnotherClassofInformation> properties =
new Dictionary<ClassOfEnums, AnotherClassofInformation>(new ClassofEnumsComparer())
密钥ClassofEnums如下:
public class ClassOfEnums
{
Enum A;
Enum B;
}
AnotherClassofInformation包含一个信息列表。我将一堆条目添加到字典中,如下所示:
Dictionary<ClassOfEnums, AnotherClassofInformation> properties =
new Dictionary<ClassOfEnums, AnotherClassofInformation>(new ClassofEnumsComparer())
{
{ new ClassOfEnums {a=1234,b=6789}, new AnotherClassofInformation{...}},
{ new ClassOfEnums {a=0987,b=4680}, new AnotherClassofInformation{...}},
{ new ClassOfEnums {a=1234,b=1357}, new AnotherClassofInformation{...}},
//and so on, where the hash of ClassOfEnums is unique for each record
}
根据有关自定义词典键的文档和在线信息,我已经实现了一个比较函数ClassOfEnumsComparer。
我想要做的是从属性中选择所有条目,例如key.a == 1234,并将它们作为新的字典(或数组)返回。是的,我可以手动创建包含我想要的其他词典,但我想只保留一个属性词典,因为数据会定期发展。
这是我对此的第一次微弱尝试。
Dictionary<ClassOfEnums, AnotherClassofInformation> getSubsetofProperties(Enum q)
{
Dictionary<ClassOfEnums, AnotherClassofInformation> p =
properties.SelectMany(x => x.Key.a == q).ToDictionary(new ClassofEnumsComparer());
return p;
}
我还在采取其他方法吗?