首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ConcurrentDictionary获取值

从ConcurrentDictionary获取值
EN

Stack Overflow用户
提问于 2012-09-22 03:26:35
回答 4查看 13K关注 0票数 3

如果我有这个ConcurrentDictionary:

代码语言:javascript
复制
public class User
{
    public string Context { get; set; }
    public bool Owner { get; set; }
}

protected static ConcurrentDictionary<User, string> OnlineUsers = new ConcurrentDictionary<User, string>();

有谁知道如果我已经有了Owner的值,我将如何获得Context的值?基本上,我想使用Context进行“查找”。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-22 03:36:08

听起来你需要一个Dictionary<string, User>,当给定上下文作为string时,它会告诉你它对应的是哪个User。如果您需要多次执行此查找,并且使用额外的内存没有问题,那么创建这样一个字典可能是值得的。

如果您只打算搜索一两次,或者映射将频繁更改而无法使字典保持最新,那么您可以简单地使用foreach循环或使用FirstWhere等LINQ方法对字典进行线性搜索,如其他答案中所示。

票数 0
EN

Stack Overflow用户

发布于 2012-09-22 03:30:11

有什么阻止你使用标准的Linq FirstOrDefault()方法的吗?

代码语言:javascript
复制
var item = OnlineUsers.FirstOrDefault(kvp => kvp.Key.Context == myContext);
票数 1
EN

Stack Overflow用户

发布于 2012-09-22 03:35:04

像这样的

代码语言:javascript
复制
var ou = OnlineUsers.First(x => x.Key.Context == "TADA");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12536982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档