我创建的词典是
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]
任何帮助
答案 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