나는 실패하고있는 어떤 코드를 가지고있다 - 실제로 그것을 편집 할 수 없다. 다음은이 코드의 작동, 즉 이것이 무엇을하는지 알아 내려고합니다. 그 실패,하지만 난 정확히 모르겠어요. Value cannot be null
,하지만 내가 코드를 편집 또는 람다의 직접 실행 창에, 나는 문제가이 문제를 디버깅하는 데 문제가 실행할 수 없기 때문에 내가 널 어떤 값을 알고하지 않습니다람다 함수 C# 의미
Dictionary<long, IList<Cell>> ByBlock =
mCache.ListBlocks.SelectMany(e => e.Value).Where(e => listBlocks.Contains(e.Key)).Select(
Block => new KeyValuePair<long, IList<CellToSubCatchment>>(Block.Key,
DataMgr.GetMapping(
"CASH",
Block,
GetKey(IdKeys, Block),
mType))).ToDictionary(e => e.Key, e => e.Value);
나는 오류를 받고 있어요. 어떻게 작동하는지 또는이 람다를 보는 더 좋은 방법에 대한 아이디어가 있습니까?
Dictionary<long, IList<Cell>> ByBlock =
mCache.ListBlocks
.SelectMany(e => e.Value)
.Where(e => listBlocks.Contains(e.Key))
.Select(Block => new KeyValuePair<long, IList<CellToSubCatchment>>(
Block.Key,
DataMgr.GetMapping("CASH",Block,GetKey(IdKeys, Block), mType))
)
.ToDictionary(e => e.Key, e => e.Value);
내 가장 좋은 방법은 ListBlocks
컬렉션 null에 동일한 Value
콜렉션이있는 요소가 있기 때문에 ListBlocks.SelectMany(e => e.Value)
호출이 실패 할 것입니다 : 코드에게 그것은 다음과 같습니다 조금 Reformating
lambdas의 고통에 오신 것을 환영합니다. (실제로는 좋아하지만 처리 오류는 고통입니다.) 몇 가지 라이너로 다시 나누어서 다시 실행하고 어떤 진술이 문제를 일으키는 지 알아내는 것이 좋습니다. – Liath
@Liath 전적으로 두 번째로 - 나는 람다 식을 좋아하지만, 불행히도 디버깅 중에는 새로운 람다 식을 공식화 할 수 없습니다! – Codor
@Codor 좋은 지적. 명확히하기 위해 나는 var a = mCache.ListBlocks.SelectMany();를 의미한다. var b = a.Where(); var c = b.Select() 등등 ... 그것은 끔찍하지만 범인을 찾기 위해 코드를 수정해야합니다. – Liath