C#中的C#,Linq搜索字典,并使用键返回字符串

时间:2016-03-13 00:59:12

标签: c# string linq dictionary

我创建的词典是

Dictionary<string, string> delta = new dictionary<string, string>();
        delta.Add("A", "One");
        delta.Add("B", "Two");
        delta.Add("C", "Three");

我想根据作为键传递的值

来检索值
public string GetValuefromdictionary(string roll. Dictionary<string, string> delta)
{       
    string rollValue;
    return rollValue = delta
        .Where(d => d.Key.Contains(roll))
        .Select(d =>   d.Value)
        .ToString();
}

然而我看到它并没有给我回复字符串,我就这样了

System.Linq.Enumerable+WhereSelectEnumerableIterator``2[System.Collections.Generic.KeyValuePair``2[System.String,System.String],System.String]

任何帮助

3 个答案:

答案 0 :(得分:0)

如果一个Key是&#34; ABC&#34;,你通过&#34; A&#34;作为roll,你想从&#34; ABC&#34;中返回值。因为&#34; ABC&#34;包含&#34; A&#34;。你可以这样做:

  return delta.FirstOrDefault(d=> d.Key.Contains(roll)).Value;

答案 1 :(得分:-1)

  

您想在词典中搜索元素,但使用值而不是&gt;关键。所以你迭代你的字典并返回   第一个具有您正在寻找的值的元素。输出你   get是一个keyValue对,因此是.Key

string key = "One";
string value = delta.FirstOrDefault(d => d.Value.Contains(key)).Key;

答案 2 :(得分:-1)

两种选择,我会说两种情况更好。

案例1

让我们说Dictionary值是唯一的,在这种情况下,我们可以简单地转换字典交换<Key,Value>对。

var transformDictionary = delta.ToDictionary(kp => kp.Value, kp => kp.Key);

现在我们可以像任何其他文件一样访问它。

transformDictionary["One"];

案例2:

值不是唯一的,在这种情况下使用LookUp。

var lookup = delta.ToLookup(c=>c.Value, c=>c.Key);      
var lookupvalue = ((IEnumerable<string>)lookup["One"]).First();

工作Demo