在c#中按字典获取键值

Mir*_*ski 1 c# linq dictionary

这个问题可能看似重复和/或太无聊,但我想使用这种特定的方法来做到这一点.

当用户将字符串输入文本框时,我想获得此字符串键.所以为了做到这一点,我创建了一个具有n(n <= 15000)个唯一值的字典.我希望通过值从这本字典中获取密钥.以下方法效果很好:

Dictionary<int, string> artikullar = new Dictionary<int, string>();
int key = (from elem in artikullar where elem.Value == txt_artikul.Text select elem).First().Key;
Run Code Online (Sandbox Code Playgroud)

在此之前,我尝试使用该First()方法获取密钥:

int key = artikullar.AsParallel().First(new Func<KeyValuePair<int, string>, bool>(val => val == txt_artikul.Text)).Key;
Run Code Online (Sandbox Code Playgroud)

但它抛出了这个错误:

运算符'=='不能应用于'KeyValuePair'和'string'类型的操作数

我以前没用过这个方法.

任何有用的评论或答案将不胜感激.

Ren*_*ogt 5

Ehsan Sajjad是对的.但我想补充一点:

你说你的琴弦Dictionary是独一无二的.我不知道你何时创建了Dictionary数据,以及数据是静态的还是一直在动态变化的.

如果它是相当静态的并且字符串是唯一的,您可以考虑创建一个Dictionary像这样的反转:

Dictionary<string, int> reversedDict = artikullar.ToDictionary(
    kvp => kvp.Value,
    kvp => kvp.Key);
Run Code Online (Sandbox Code Playgroud)

然后使用它进行查找:

int key = reversedDict[txt_artikul.Text];
Run Code Online (Sandbox Code Playgroud)

这可能比查询原始字典更快.