조인이 카디널리티를 망칠 것입니다! 부모님 목록이 없습니다!
테스트되지 않은 직접 작성한 코드는 다음과 같습니다. Linq 디자이너에서 관계를 추가하면 관계 속성이 제공됩니다. String.Join은리스트를 정리합니다.
두 가지 선택적 메서드 호출을 추가했습니다.
여기서 ...은 자녀가있는 부모 만 필터링합니다. 나는 문자열에 대해 확신하지 못한다. 빈 배열에 조인의 행동.
ToList은 부모를 메모리에 저장하고 나중에 데이터베이스 호출을 통해 액세스합니다. 이것은 런타임 문자열을 얻는 경우 필요할 수 있습니다. 조인은 SQL 변환기 예외로 지원되지 않습니다. 이 예외는 LINQ가 메서드 호출을 SQL Server에서 이해할 수있는 것으로 변환하려고 시도했음을 의미합니다.
int parentID = Convert.ToInt32(Request.QueryString["parentId"]);
List<string> result =
db.Parents
.Where(p => p.ParentId == parentID)
//.Where(p => p.ParentChildLookup.Children.Any())
//.ToList()
.Select(p =>
"Name: " + p.ParentName + "<br />" +
"Children: " + String.Join(", ", p.ParentChildLookup.Children.Select(c => c.Name).ToArray() + "<br />"
)).ToList();
메모 : 일반적으로 데이터가 마크 업을 위해 올바르게 이스케이프 처리 될 때까지 데이터와 마크 업을 혼합하지 않으려합니다. groupby
와 오래 된 질문에 대한 답변을 게시
var family = from p in db.Parents
where p.ParentId == Convert.ToInt32(Request.QueryString["parentId"])
join pcl in db.ParentChildLookup on p.ParentId equals pcl.ParentId
select new {
Family = "Name: " + p.ParentName + "<br />" + string.Join(",",(from c in db.Children where c.ChildId equals pcl.ChildId select c.ChildId.ToString()).ToArray());
};
감사합니다. 이 데이터를 다른 방식으로 표시하기로 결정했는데 이것이 올바른 방향으로 나아갔습니다. –