从列表中获取值

时间:2013-10-29 10:13:23

标签: c# asp.net c#-4.0 c#-3.0

我创建了像

这样的列表
var list = new List<KeyValuePair<string, string>>();
list.Add(new KeyValuePair<string, string>("1", "abc"));
list.Add(new KeyValuePair<string, string>("2", "def"));
list.Add(new KeyValuePair<string, string>("3", "ghi"));

如何从此列表中选择值。 这意味着我需要将1传递给列表并且需要取相等的值“abc”。如何做到这一点?输入为1,输出为abc。

2 个答案:

答案 0 :(得分:6)

听起来你只是想要:

var value = list.First(x => x.Key == input).Value;

如果您确定钥匙将存在,那就是这样。这有点棘手,部分原因是KeyValuePair是一个结构。你可能想要:

var pair = list.FirstOrDefault(x => x.Key == input);
if (pair.Key != null)
{
    // Yes, we found it - use pair.Value
}

你有什么理由不只是使用Dictionary<string, string>吗?这是键/值对集合的更自然的表示:

var dictionary = new Dictionary<string, string>
{
    { "1", "abc" },
    { "2", "def" },
    { "3", "ghi" }
};

然后:

var value = dictionary[input];

再次,假设您知道密钥将存在。否则:

string value;
if (dictionary.TryGetValue(input, out value))
{
    // Key was present, the value is now stored in the value variable
}
else
{
    // Key was not present
}

答案 1 :(得分:1)

你为什么不使用字典? http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

在我看来,这可以解决您的问题,并且使用起来更容易。