字典.C#中的项

本文关键字:字典 | 更新日期: 2023-09-27 18:25:58

我从一年前开始使用VB.NET,现在我不得不在另一个使用C#的项目中工作,但我找不到这种等价物。。

在VB.NET 中

Dim dictionary As Dictionary(Of String, Decimal)
Dim oPerson As Person = Nothing
Dim key as string = "SomeValue"
If dictionary.ContainsKey(key) Then
oPerson = dictionary.Item(key)
End If

在C#中,最好的方法是什么??

我发现了这样的东西,但我不知道这是否是最好的方法

Person oPerson = dictionary.Where(z => z.Key == key).FirstOrDefault().Val

字典.C#中的项

可能是这样的:

Dictionary<String, Person> dictionary = new Dictionary<String, Person>();
...  
Person oPerson = null;
String key = "SomeValue";
if (dictionary.TryGetValue(key, out oPerson)) {
    // Person instance is found, do something with it
}
Dictionary<string, decimal> dictionary = null;
Person oPerson = null;
string key = "SomeValue";
if (dictionary.ContainsKey(key)) {
    oPerson = dictionary[key];
}
Dictionary<string, decimal> dictionary = null;
Person oPerson = null;
string key = "SomeValue";
if (dictionary.ContainsKey(key)) {
oPerson = dictionary[key];
}

Dictionary dictobj=新词典();dictobj。添加(1123);dictobj。添加(2345);

       var a = dictobj.Where(x => x.Key == 1).First().Value;

OP答案几乎已经存在,如果他可以使用Linq来获取数据的话。因为条件只有一个键,所以Where条件就足够了,否则您可以使用。Contains用于多个条件。

Person oPerson =new Person();    
var a= dictionary.Where(z => z.Key == key).FirstOrDefault();
if (a.Count() > 0)
{
   oPerson.ABC =  a.FirstOrDefault().Value;
}

有两种方法可以解决这个问题:

如果字典中不存在密钥,这将引发异常(异常不是坏事!)

var value = dictionary["key"] as Person;

如果您想先检查密钥是否存在:

Person person = null;
if(!dictionary.TryGetValue("key", out person))
{
    //Dictionary did not contain value, act accordingly ...
    // ...
}

我想强调的是,异常并不是一件坏事,如果你的应用程序稍后会失败,如果字典中不包含Person,那么一定要抛出异常!