gpt4 book ai didi

c# - 如何访问字典中唯一的 KeyValuePair?

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:00 26 4
gpt4 key购买 nike

我有一个从数据库中填充的字典。

如果只返回一条记录,如何访问KeyValuePair?

我有这个代码:

Dictionary<int, string> CandidatePlatypiDict = PlatypusID > 0 ? DuckbillData.GetPlatypusById(PlatypusID) :  DuckbillData.GetCandidatePlatypiFromName(SearchVal);
KeyValuePair<int, String> kvp;

...这很好地填充了字典。当有多个KVP时,我将它们显示在一个DGV中,然后通过这种方式分配给kvp:

DataGridViewRow selectedRow = dataGridViewPlatypi.Rows[selectedrowindex];
int i = Convert.ToInt32(selectedRow.Cells["DuckBillAccountNum"].Value);
string s = Convert.ToString(selectedRow.Cells["DuckBillName"].Value);
this.PlatypiKVP = new KeyValuePair<int, string>(i, s);

...但是如果只有一条记录,我不需要在 DGV 中显示值,因为没有真正的选择要做——我将只使用那个。但到目前为止,我对如何分配我需要的值 kvp.Key 和 kvp.Value 一片空白:

if (CandidatePlatypiDict.Count == 1)
{
//kvp.Key = CandidatePlatypiDict[0]. strike 1
//kvp.Key = CandidatePlatypiDict.Keys[0] strike 2
// ???
}

最佳答案

您可以根据需要使用First()Single()。例如:

if (CandidatePlatypiDict.Count == 1)
{
var firstPair = CandidatePlayDict.First();

// can then access firstPair.Key and firstPair.Value
...
}

Single()First() 之间有很多不同之处,这取决于您想要什么。

即使存在多个可能也只获取第一个项目:

  • First() - 先抓取,即使存在多个,如果没有则抛出。
  • FirstOrDefault() - 不会抛出,如果没有则先返回或默认。

确保至多存在一个:

  • Single() - 确保只有一个条目,如果不完全是一个则抛出。
  • SingleOrDefault() - 确保最多一个,如果没有则返回默认值,如果更多则抛出。

所以我会选择最能满足您需求的那一款。从你的问题陈述中,我建议的是,因为它似乎有一个空字典是一个非常常见的可能结果,所以首先检查 Count (正如你正在做的那样)然后调用 First ()

这会大大减少开销,因为这样您就不必担心异常开销(而且 Count 是 O(1) 操作)。

关于c# - 如何访问字典中唯一的 KeyValuePair?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com