나는 목록에서 사전을 만들려는 널 (null), 그래서 나는이 방법을 사용합니다 :사전 키
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 또는 람다 식 또는 다른 방법으로, 더 나은 방법으로 그것을 할 수 있는지 알고 싶습니다. 내 코드를 단순화해라.
가 'X => x.ForeignKey' 줄로 람다 expession에''Func을을 리팩토링 및 경우에 예외를 발생시킬 수는'* T.ForeignKey'는 NULL이다. –
user3185569
또 다른 옵션은'Dictionary>'입니다. –