내가 (프로젝트 데 아래와 같은 방법을 호출하는 경우부모 컬렉션 일치하는 부모들에게 자식 컬렉션을 적용
public static void ApplyParentChild<TParent, TChild, TId>(
this IEnumerable<TParent> parents, IEnumerable<TChild> children,
Func<TParent, TId> id, Func<TChild, TId> parentId,
Action<TParent, TChild> action
)
{
var lookup = parents.ToDictionary(id);
foreach (var child in children)
{
TParent parent;
if (lookup.TryGetValue(parentId(child), out parent))
action(parent, child);
}
}
&이 웍 나는 부모 컬렉션 적절한 부모 자식 컬렉션을지도하는 방법을 그것에있는 단계의 목록)
projects.ApplyParentChild(phases, p => p.ProjectId, c => c.ProjectId, (p, c) => p.ProjectPhases.Add(c));
그러나 나는 종종 내가 거기에 프로젝트 참조가있는 단계가있는 상황이 있습니다. 그래서 그 시간이라고 부르죠
phases.ApplyParentChild(projects, p => p.ProjectId, c => c.ProjectId, (p, c) => p.project=c);
이것은 실패합니다. 이는 parents.ToDictionary(id)
이 고유 한 식별자를 가져 오지 못하고 "동일한 키를 가진 항목이 이미 추가되었습니다"라는 오류를 반환하기 때문입니다.
이 문제는 어떻게 처리합니까? 나는 린크 마스터가 아니다. 누구든지 나를 도울 수 있습니까?
혹시 (가끔) Linq 가입을 재 구현 한 이유가 있습니까? – spender
HW는 linq에 가입 했습니까? –