List<KeyValuePair<String, String> myList = new List<KeyValuePair<String, String>>();
myList.Add(new KeyValuePair<String, SelectList>("theKey", "FIND THIS!"));
如何从"FIND THIS!"
只知道myList
来检索theKey
?这种尝试无效。
String find = myList.Where(m => m.Key == "theKey");
来自其他语言,我总是有可能搜索大关联数组并检索这样的值:array[key] = value;
我怎样才能在C#中做到这一点?
答案 0 :(得分:5)
使用List<KeyValuePair>
代替Dictionary<string, SelectList>
,然后您可以像访问:
array[key] = value;
您可以使用词典:
Dictionary<String, SelectList> dictionary= new Dictionary<String, SelectList>();
dictionary.Add("theKey", "FIND THIS!");
Console.WriteLine(dictionary["theKey"]);
答案 1 :(得分:1)
您可能正在寻找Dictionary<TKey, TValue>
:
Dictionary<string, string> myDict = new Dictionary<string, string>();
myDict.Add("theKey", "FIND THIS!");
现在您可以通过键找到该值:
string value = myDict["theKey"];
您可以这样更改值:
myDict["theKey"] = "new value"; // works even if the key doesn't exist, then it will be added
请注意,密钥必须是唯一的。
答案 2 :(得分:1)
字典怎么样?
IDictionary<String, String> foo = new Dictionary<String, String>();
foo.Add("hello","world");
现在你可以使用[]
foo["Hello"];
然而使用C#
string value;
if(foo.TryGetValue("Hello" , out value)){
// now you have value
}
更加可取和安全。
答案 3 :(得分:1)
如其他答案中所述,您应该使用字典。
但是,您的行String find = myList.Where(m => m.Key == "theKey");
无效的原因是myList.Where(m => m.Key == "theKey");
将返回KeyValuePair
。如果你只想要你可以尝试的价值:
String find = myList.Where(m => m.Key == "theKey").Single().Value;
或者如果您需要检查空值,那么可能:
var findKeyValue = myList.Where(m => m.Key == "theKey").SingleOrDefault();
if(findKeyValue != null)
{
var find = findKeyValue.Value;
}
您还可以使用以下代码段(在这种情况下,您将拥有值或null)
var find = myList.Where(m => m.Key == "theKey").Select(kvp => kvp.Value).SingleOrDefault();