提问者:小点点

保存一对相同类型的值


背景:对于我的用户,我需要存储一对相同的对象类型(设置),目前我有它像

Dictionary<long, List<KeyValueType<Setting, Setting>>> SettingKeyPairs 

我正在创建带有设置的KeyValueTypes,并将其添加到列表中(每个用户都有一个列表)。我的设置有一个值字段(它显示了它们是否比其他设置“更重要”),所以我希望基于该字段添加它们,稍后我还需要基于该字段(可能还需要基于名称字段)进行搜索--所以搜索将不得不在列表中查找,然后在KeyValueTypes中查找

问题:什么是最好的数据来代替KeyValueTypes?对于添加/搜索部分,当我需要根据一个特定的值/值来做它时,它很麻烦。我也尝试过元组,但仍然不认为这是好的。


共1个答案

匿名用户

从你的问题上很难说--也许我并不完全理解。但我可能会存储setting类型的列表,并公开一个返回最高值的getter(或任何条件)。

public class RankedSettings
{
   public RankedSettings(IEnumerable<Setting> settings)
   {
      _settings = settings;
   }

   private readonly IEnumerable<Setting> _settings;


   public Setting GetHighestValue() => _settings.OrderByDescending(x => x.Value).FirstOrDefault();
}

...

var userSettingsCollection = new Dictionary<long, RankedSettings>();

...

var settings = userSettingsCollection[userId]?.GetHighestValue();

当然,您可以更好地将其打包,以便重写字典getter来为您执行GetHighestValue()调用。