gpt4 book ai didi

c# - 字典将为空键

转载 作者:行者123 更新时间:2023-12-02 17:24:41 28 4
gpt4 key购买 nike

我想从列表创建一个字典,所以我会使用这种方式:

Dictionary<long, List<MyType>> miDicIdMyType = myList.GroupBy(x => x.ForeignKey)
.ToDictionary(x => x.Key, x => x.ToList());

问题是有时属性可能为空,所以我可以创建字典,因为字典不允许空值作为键。

但是在这种特殊情况下,我必须检查这个属性是否为空,如果为空,则抛出异常,因为这是一个错误。在这个特定的方法中,我希望列表中的所有项目在此属性中都没有 null。

所以我可以这样做:

Dictionary<long, List<MyType>> miDicIdMyType = myList.GroupBy(x => (long)x.ForeignKey)
.ToDictionary(x => x.Key, x => x.ToList());

它是一个长整型转换,但如果它为空,我会得到一个错误。所以基本上我想这样做:

Dictionary<long, MyType> myDic = new Dictionary<long, myType>();
foreach (Mytype iterator in miList)
{
if (iterator.ForeignKey == null)
{
throw new ArgumentNullException("Some items in the collection has null value and it is not expected.");
}

if (myDic.ContainsKey(iterator.ForeignKey) == false)
{
myDic.Add(iterator.ForeignKey, new List<MyType>());
}

myDic[iterator.ForeignKey].Add(iterator);
}

我想知道这是否是一个好的代码,或者我可以用更好的方式来实现它,使用 LINQ 或 lambda 表达式或任何其他方式。我的意思是,简化我的代码。

最佳答案

您正在寻找类似的东西吗?

Dictionary<long, List<MyType>> miDicIdMyType = myList.GroupBy(x =>
{
if (x.ForeignKey == null)
throw new Exception();
return x.ForeignKey.Value;
})
.ToDictionary(x => x.Key, x => x.ToList());

关于c# - 字典将为空键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794685/

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