をゼロにします私は、リストから辞書を作成したいと思いますので、私はこの方法を使用します。辞書キー
Dictionary<long, List<MyType>> miDicIdMyType = myList.GroupBy(x => x.ForeignKey)
.ToDictionary(x => x.Key, x => x.ToList());
問題は時々プロパティがnullになることができるということですので、私はので、辞書を作成することができます辞書はヌル値をキーとして許可しません。
しかし、この特定のケースでは、このプロパティがnullであるかどうかをチェックしなければならず、nullの場合はエラーですので例外をスローします。この特定のメソッドでは、リスト内のすべての項目がこのプロパティにnullを持たないことを期待しています。
だから私はこれを行うことができます:
Dictionary<long, List<MyType>> miDicIdMyType = myList.GroupBy(x => (long)x.ForeignKey)
.ToDictionary(x => x.Key, x => x.ToList());
はそれは長いへのキャストですが、それがnullの場合、私はエラーを取得します。だから、基本的に私はこれをやってみたかった:
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やラムダ式またはその他の方法で、より良い方法でそれを行うことができます。つまり、私のコードを簡素化します。
あなたは複数行のラムダexpession 'のFunc'に 'X => x.ForeignKey'をリファクタリングし、場合に例外をスローすることができます' T.ForeignKey'は* * NULLです。 –
user3185569
別のオプションは 'Dictionary>'です。 –