내가 뭘 하려는지에 대한 간단한 Linq 쿼리가 있어야하지만, 나는 못생긴 코드를 만들고있다.이 Linq 문을 구성하는 데 도움이
두 테이블 중 하나는 문제이고 다른 하나는 문제 상태입니다. 이슈와 이슈 상태간에 일대 다의 관계가 있습니다. 이슈가 생성되면 이슈가 닫힐 때 상태 필드가 "열림"으로 설정된 이슈 상태가 생성되고 상태 필드가 "닫힘"으로 설정된 또 다른 이슈 상태가 생성되지만 문제는 다시 열릴 수 있습니다. 내가 이런 걸 쓸 수있을 것 같아 :
이public static List<Issue> FindOpenIssues(this IList<Issue> issues) {
return (
from issue in issues
from issueStatus in issue.issueStatus.OrderByDescending(x=>x.CreatedOn).Single()
where issueStatus.Status == "Open"
select issue
).ToList();
}
이 분명히 실패,하지만이 작업을 수행하는 깨끗한 방법이 있어야합니다? 감사!
편집 : Reed Copsey가 지적했듯이, 현재 의도하지 않은 바를 찾아야합니다. 이슈는 "Open"요소를 포함하고 나중에 "Closed"요소를 포함 할 수 있습니다 ... 이것은 단순한 Where == "Open"이 작동하지 않는 이유이며, 가장 최근 날짜의 요소를 찾아야합니다 목록에서 문제의 상태를 확인하십시오.
적어도 ** 모든 ** 문제는 한번에 열지 않습니까? 그래서 이것은 모든 이슈를 선택하게 될 것입니다, 그렇죠? – dtb
dtb : 문제가 완료된 후에 닫히는 것으로 표시되지 않는 경우. 나는 원래의 행동을 제공하기 위해 다시 작성했지만 ... –
감사합니다, 완벽하게 작동합니다! 그냥 내 프로젝트에 대해 테스트. 당신은 OrderBy가 OrderByDescending 일 것임에 틀림 없습니다. –