使用部分键从Dictionary <ulong,object =“”>检索值

时间:2018-10-26 00:35:51

标签: c# .net

我有accounts的字典

accounts<ulong, accounts>

在我的代码中,我有一个部分密钥。

问题:是否可以使用startswith之类的方法来检查是否可以找到具有部分关键account.id的对象?

谢谢

1 个答案:

答案 0 :(得分:2)

尽管效率很低,但以下方法应该起作用:

IEnumerable<Account> FindByPartialId(Dictionary<ulong, Account> dictionary, ulong partialId)
{
    var partialIdAsString = partialId.ToString();
    var matchingKeys = dictionary.Keys.Where(k => k.ToString().StartsWith(partialIdAsString));
    var matchingValues = matchingKeys.Select(k => dictionary[k]);
    return matchingValues;
}

可能您想保留字典的副本,而键直接是字符串,然后在字典上进行搜索:

var accountsByStringKey = accounts.Keys.ToDictionary(k => k.ToString(), k => accounts[k]);

因此您可以.Where(k => k.StartsWith...代替.Where(k => k.ToString().StartsWith...